在互聯網產品上線之後,產品和運營人員需要即時瞭解產品的使用情況,有多少用戶,用戶使用了哪些功能,停留時長,使用路徑。。。等。要回答這些問題,需要有數據,不能拍腦袋想當然。數據怎麼得到呢?埋點就是採集數據的重要途徑。 數據埋點不是新名詞,在電腦網站出來之後就有統計工具,站長們很熟悉的谷歌、百度統計等工 ...
在互聯網產品上線之後,產品和運營人員需要即時瞭解產品的使用情況,有多少用戶,用戶使用了哪些功能,停留時長,使用路徑。。。等。要回答這些問題,需要有數據,不能拍腦袋想當然。數據怎麼得到呢?埋點就是採集數據的重要途徑。
數據埋點不是新名詞,在電腦網站出來之後就有統計工具,站長們很熟悉的谷歌、百度統計等工具,通過在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、無埋點
原理跟可視化埋點幾乎一樣,唯一的不同就是,無埋點是先把所有控制項的操作數據採集下來,發給伺服器,數據分析人員在後臺管理端設置對哪些數據進行分析。由此可知,這個方案收集的數據量巨大,增加了網路傳輸和伺服器存儲負擔。
無埋點比可視化方案優勢的地方是收集的歷史數據齊全,可以回溯分析過往數據。
工具選擇
國內不少數據服務公司提供了數據採集、分析工具,初創公司可以選擇使用它們的服務,不過最好選擇可以獨立部署的提供方,方便控制,防止數據泄漏。
總結一下,數據埋點需要根據需求而定,靈活使用以上方案,揚長避短。