前端埋點常用方法

1. 使用場景

  主要用於數據採集,如:性能分析,用戶行爲分析,日常信息採集,測試信息採集等。指的是針對特定用戶行爲或事件進行捕獲、處理和發送的相關技術及其實施過程。. 比如用戶某個icon點擊次數、觀看某個視頻的時長等等。

2. 方法

  常見的埋點上報方式有ajax,img,navigator.sendBeacon。這些都是需要發送到服務端的,也可以採用本地存儲等方式保存到客戶端,然後通過一些手動計算、導出,甚至可以等分析完之後再上報分析結果等。我在一個項目種分析界面性能就是採用的本地緩存,不涉額外的服務請求。

2.1 ajax

  即編寫一個發送ajax請求的方法,在想要埋點的地方直接調用發送。

2.2 img

  主要因爲可以通過支持跨域的標籤來達到效果,主要有script,link,img,但是前兩者必須要append到頁面dom中後纔會加載,而img可以在指定src之後就加載,所以爲了不影響dom和阻塞加載,優先考慮img。使用方法:

1 var img=new Image();
2 img.src="https://lf3-cdn-tos.bytescm.com/obj/static/xitu_juejin_web/img/MaskGroup.13dfc4f1.png";

2.3 Navigator.sendBeacon

  目前通用的埋點方案,有兩個參數,第一個參數是目標服務器的 URL,第二個參數是所要發送的數據(可選),可以是任意類型(字符串、表單對象、二進制對象等等)。

  sendBeacon 如果成功進入瀏覽器的發送隊列後,會返回true;如果受到隊列總數、數據大小的限制後,會返回false。返回ture後,只是表示進入了發送隊列,瀏覽器會盡力保證發送成功,但是否成功了,不會再有任何返回值。

3.對比

  ajax:缺點是容易跨域,且可能失敗,需要考慮失敗場景,可能需要同步(避免異常中斷);

  img: 兼容性好,不操作dom,不會阻塞html的解析,但img加載後並不渲染,它需要等待Render Tree生成完後才和Render Tree一起渲染出來。而且,通常埋點上報會使用gif圖,合法的 GIF 只需要 43 個字節;

  Navigator.sendBeacon:更規範,異步,可跨域,對頁面的影響幾乎沒有。

 

部分摘自掘金:https://juejin.cn/post/7224132741997281338

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章