在互聯網產品上線以後,產品和運營人員須要即時瞭解產品的使用狀況,有多少用戶,用戶使用了哪些功能,停留時長,使用路徑。。。等。要回答這些問題,須要有數據,不能拍腦殼想固然。數據怎麼獲得呢?埋點就是採集數據的重要途徑。html
數據埋點不是新名詞,在電腦網站出來以後就有統計工具,站長們很熟悉的谷歌、百度統計等工具,經過在HTML頁面中嵌入它們提供的js代碼實現數據採集。前端
多說幾句,不管谷歌、百度仍是其它的Web頁面統計工具,技術實現原理一般都是由Web服務器端經過代碼的方式向瀏覽器返回一張 1*1 像素的透明圖片(在網頁上人眼看不到這張圖片),圖片的過時時間設置成當即過時,這樣每次打開頁面瀏覽器都會去請求這張圖片,服務器端就能夠記錄下請求數據。明白了原理,本身也能夠寫一個簡單的統計工具。git
在設計埋點方案以前須要肯定收集哪些數據,將這些需求彙總,產品、運營、技術一塊兒肯定埋點方案。github
從埋點位置劃分,能夠分爲:前端埋點,後端埋點。小程序
前端埋點後端
顧名思義就是在用戶可見的那端(APP、網頁、PC客戶端、小程序)嵌入數據採集代碼,像一些第三方的統計工具,好比友盟等,前端嵌入它們的SDK,調用SDK提供的接口採集數據。瀏覽器
前端埋點能收集到用戶在界面上的操做軌跡,這些數據後端無法收集,好比用戶點擊了哪一個按鈕,打開了哪些頁面,頁面之間的跳轉次序等。服務器
後端埋點網絡
後端埋點就是在服務端嵌入代碼,收集數據,因爲是在服務端採集數據,能夠避免前端埋點的如下一些問題:工具
客戶端採集數據,爲了儘可能減小對用戶體驗的影響,須要對採集的數據壓縮、暫存,爲減小移動端的數據流量,通常只在網絡情況良好的狀況下向服務器發送數據,所以數據會有延遲,丟數據等弊端。而在服務端採集數據,數據在內網傳輸,數據傳輸的即時性強,丟失數據的風險小。
客戶端採集數據,若是要增長採集點或變動採集方案,須要修改客戶端代碼,這就須要發佈新版本,受發佈週期的影響,並且一般不少用戶並不會及時更新版本,將致使新方案不能覆蓋全部用戶。在服務端採集數據則沒有這些問題。
經過以上比較,實施時儘可能採用後端埋點,除非後端無法採集到所須要的數據。
前端埋點技術
目前常見的前端埋點技術,有下面三類:
一、代碼埋點
谷歌統計、百度統計、友盟等都是代碼埋點的例子。在前端代碼裏嵌入數據採集代碼,好比在APP啓動時嵌入,在按鈕點擊事件裏嵌入等。
代碼埋點的優勢是控制精準,採集的數據項精確。缺點:首先是須要開發人員處處添加採集代碼,添加和修改的工做量大;其次變動採集策略,須要發佈新版本,代價巨大;此外對於APP來講還有耗電、消耗數據流量、丟失數據的風險。
二、可視化埋點
從上面可知,代碼埋點的缺點不少,最大的缺點是變動須要開發人員修改代碼,不靈活。爲了改善,有的公司開發出了可視化埋點技術,產品與運營人員經過GUI界面,鼠標點擊的方式隨時調整埋點位置,增長、取消埋點,不再須要開發人員的介入,並且不用發佈新版本。
最先提供這種方案的是 Mixpanel 公司,Github上有該公司發佈的SDK代碼,https://github.com/mixpanel。國內提供可視化埋點技術的公司大都是在它的基礎上進行二次開發而成。
技術實現原理
基本原理就是將埋點位置信息作成可配置的資源,經過在後臺管理端上操做生成這些配置,客戶端啓動或者定時從服務器端獲取這些配置,客戶端根據最新的配置採集數據,發送給服務端。
具體實現是SDK定時作界面截圖,在截圖的同時從界面UI的根對象開始遍歷全部的可視化子對象,獲得其層級關係。根據截圖和UI元素的可視化信息從新渲染頁面,識別可埋點的控件。當產品人員在後臺管理端的截屏畫面上點擊可埋點控件,設置事件關聯方面的配置,服務器保存這些配置,客戶端在獲取到這些配置信息之後,按照新配置採集數據。
三、無埋點
原理跟可視化埋點幾乎同樣,惟一的不一樣就是,無埋點是先把全部控件的操做數據採集下來,發給服務器,數據分析人員在後臺管理端設置對哪些數據進行分析。由此可知,這個方案收集的數據量巨大,增長了網絡傳輸和服務器存儲負擔。
無埋點比可視化方案優點的地方是收集的歷史數據齊全,能夠回溯分析過往數據。
工具選擇
國內很多數據服務公司提供了數據採集、分析工具,初創公司能夠選擇使用它們的服務,不過最好選擇能夠獨立部署的提供方,方便控制,防止數據泄漏。
總結一下,數據埋點須要根據需求而定,靈活使用以上方案,揚長避短。
數據埋點產品上線以後最重要的事情就是獲取用戶和運營推廣,有關這個話題,參看《互聯網產品發掘種子用戶和意見領袖的方法》。