互聯網產品怎麼做數據埋點

来源:https://www.cnblogs.com/aiandbigdata/archive/2018/12/01/10047070.html
-Advertisement-
Play Games

在互聯網產品上線之後,產品和運營人員需要即時瞭解產品的使用情況,有多少用戶,用戶使用了哪些功能,停留時長,使用路徑。。。等。要回答這些問題,需要有數據,不能拍腦袋想當然。數據怎麼得到呢?埋點就是採集數據的重要途徑。 數據埋點不是新名詞,在電腦網站出來之後就有統計工具,站長們很熟悉的谷歌、百度統計等工 ...


在互聯網產品上線之後,產品和運營人員需要即時瞭解產品的使用情況,有多少用戶,用戶使用了哪些功能,停留時長,使用路徑。。。等。要回答這些問題,需要有數據,不能拍腦袋想當然。數據怎麼得到呢?埋點就是採集數據的重要途徑。

數據埋點不是新名詞,在電腦網站出來之後就有統計工具,站長們很熟悉的谷歌、百度統計等工具,通過在HTML頁面中嵌入它們提供的js代碼實現數據採集。

多說幾句,無論谷歌、百度還是其它的Web頁面統計工具,技術實現原理通常都是由Web伺服器端通過代碼的方式向瀏覽器返回一張 1*1 像素的透明圖片(在網頁上人眼看不到這張圖片),圖片的過期時間設置成立即過期,這樣每次打開頁面瀏覽器都會去請求這張圖片,伺服器端就可以記錄下請求數據。明白了原理,自己也可以寫一個簡單的統計工具。

在設計埋點方案之前需要確定收集哪些數據,將這些需求彙總,產品、運營、技術一起確定埋點方案。

從埋點位置劃分,可以分為:前端埋點,後端埋點。

前端埋點

顧名思義就是在用戶可見的那端(APP、網頁、PC客戶端、小程式)嵌入數據採集代碼,像一些第三方的統計工具,比如友盟等,前端嵌入它們的SDK,調用SDK提供的介面採集數據。

前端埋點能收集到用戶在界面上的操作軌跡,這些數據後端沒法收集,比如用戶點擊了哪個按鈕,打開了哪些頁面,頁面之間的跳轉次序等。

後端埋點

後端埋點就是在服務端嵌入代碼,收集數據,由於是在服務端採集數據,可以避免前端埋點的以下一些問題:

客戶端採集數據,為了儘量減少對用戶體驗的影響,需要對採集的數據壓縮、暫存,為減少移動端的數據流量,一般只在網路狀況良好的情況下向伺服器發送數據,因此數據會有延遲,丟數據等弊端。而在服務端採集數據,數據在內網傳輸,數據傳輸的即時性強,丟失數據的風險小。

客戶端採集數據,如果要增加採集點或變更採集方案,需要修改客戶端代碼,這就需要發佈新版本,受發佈周期的影響,而且通常很多用戶並不會及時更新版本,將導致新方案不能覆蓋所有用戶。在服務端採集數據則沒有這些問題。

通過以上比較,實施時儘量採用後端埋點,除非後端沒法採集到所需要的數據。

前端埋點技術

目前常見的前端埋點技術,有下麵三類:

1、代碼埋點

谷歌統計、百度統計、友盟等都是代碼埋點的例子。在前端代碼里嵌入數據採集代碼,比如在APP啟動時嵌入,在按鈕點擊事件里嵌入等。

代碼埋點的優點是控制精準,採集的數據項精確。缺點:首先是需要開發人員到處添加採集代碼,添加和修改的工作量大;其次變更採集策略,需要發佈新版本,代價巨大;此外對於APP來說還有耗電、消耗數據流量、丟失數據的風險。

2、可視化埋點

從上面可知,代碼埋點的缺點很多,最大的缺點是變更需要開發人員修改代碼,不靈活。為了改善,有的公司開發出了可視化埋點技術,產品與運營人員通過GUI界面,滑鼠點擊的方式隨時調整埋點位置,增加、取消埋點,再也不需要開發人員的介入,而且不用發佈新版本。

最早提供這種方案的是 Mixpanel 公司,Github上有該公司發佈的SDK代碼,https://github.com/mixpanel。國內提供可視化埋點技術的公司大都是在它的基礎上進行二次開發而成。

技術實現原理

基本原理就是將埋點位置信息做成可配置的資源,通過在後臺管理端上操作生成這些配置,客戶端啟動或者定時從伺服器端獲取這些配置,客戶端根據最新的配置採集數據,發送給服務端。

具體實現是SDK定時做界面截圖,在截圖的同時從界面UI的根對象開始遍歷所有的可視化子對象,得到其層級關係。根據截圖和UI元素的可視化信息重新渲染頁面,識別可埋點的控制項。當產品人員在後臺管理端的截屏畫面上點擊可埋點控制項,設置事件關聯方面的配置,伺服器保存這些配置,客戶端在獲取到這些配置信息以後,按照新配置採集數據。

3、無埋點

原理跟可視化埋點幾乎一樣,唯一的不同就是,無埋點是先把所有控制項的操作數據採集下來,發給伺服器,數據分析人員在後臺管理端設置對哪些數據進行分析。由此可知,這個方案收集的數據量巨大,增加了網路傳輸和伺服器存儲負擔。

無埋點比可視化方案優勢的地方是收集的歷史數據齊全,可以回溯分析過往數據。

工具選擇

國內不少數據服務公司提供了數據採集、分析工具,初創公司可以選擇使用它們的服務,不過最好選擇可以獨立部署的提供方,方便控制,防止數據泄漏。

 

總結一下,數據埋點需要根據需求而定,靈活使用以上方案,揚長避短。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • chalk 是一個可以給終端輸出加上色彩的工具包,有了它,你的終端將變得五顏六色,花哨的一匹
  • Class constructor() 實例對象 表達式 提升 私有方法和私有屬性 this name屬性 取值函數和存值函數 Generator方法 靜態方法 靜態屬性和實例屬性 new.target屬性 1.constructor是構造方法。 2.this關鍵字則代表實例對象。 3.定義“類”的 ...
  • 1. dom>documentElement>body>tagname 2.我們常用的節點標簽。 元素節點(標簽) 文本節點 屬性節點(標簽里的屬性) 3.document有個屬性nodeType返回的是數字 1.代表元素節點 2.代表屬性節點 3.代表文本節點 4.節點的獲取 元素節點獲取有很多方 ...
  • 話不多說,直接開魯 1. startsWith() 作用: 檢測字元串以什麼開頭 實例: 2. endsWith() 作用: 檢測字元串以什麼結尾 實例: 3. includes() 作用: 檢測字字元串中是否包含某個字元 實例: 4. repeat(n) 作用: 重覆 n 次 實例 5. padS ...
  • 接下去一系列關於 JavaScript 語法的文章中,將會出現很多在 Java 里出現或者沒出現過的專業術語,所以第一篇就先來羅列一下,每個術語先給一定的解釋。 有的理解不了沒關係,等這系列文章看完,再回過頭來看這一張基本也都能理解了。先羅列出來,至少有個印象,不至於到時看到一臉懵逼。 ...
  • 前言   本文主要介紹facebook推出的一個類庫immutable.js,以及如何將immutable.js集成到我們團隊現有的react+redux架構的移動端項目中。 本文較長(5000字左右),建議閱讀時間: 20 min 通過閱讀本文,你可以學習到: 什麼是immut ...
  • 動態組件中用匯流排Bus的坑 在我們的項目總難免會遇到用動態組件,這裡就拿 "vue官方的例子" 為例,我們欲在組件中添加匯流排bus(其實官方推薦的vuex更好用,但是有時候我們只需要傳一個小狀態,不需要用vuex),首先要mian.js 中創建一個匯流排Bus(當然這裡一般要把Bus封裝一下放在一個單 ...
  • 本文文字內容均選自《大話設計模式》一書。 解釋:觀察者模式定義了一種一對多的依賴關係,讓多個觀察者對象同時監聽某一個主題對象。這個主題對象在狀態發生變化時,會通知所有觀察者對象,使它們能夠自動更新自己。 此模式又叫發佈-訂閱模式。 舉例:火車到站與乘客下車。 主題: 觀察者1: 觀察者2: 客戶端: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...