javascript技巧

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript技巧 > 前端JS日志采集方式

前端JS日志采集的几种方式盘点

作者:独立开阀者_FwtCoder

前端日志采集,说简单也简单,说复杂也复杂,取决于业务想要什么粒度的数据,以及开发者能接受多少侵入性、延迟和兼容性问题,今天我们就来盘一盘常见的几种前端上报方式,以及各自的优劣势和适用场景,需要的朋友可以参考下

1. + GIF / Pixel 上报

原理:   通过在页面上动态创建一个Image对象,把要上报的数据编码到请求 URL 的 query 参数中,然后加载一个 1x1 的透明 GIF 图片(当然不需要真的返回一张图,后端 204 也行),重点是通过src请求资源的同时,让服务端记录.gif后的数据。

代码示例:

const img = new Image();
img.src = `https://logserver.com/collect?event=click&userId=123`;

优点:

缺点:

适用场景:

2. fetch / XMLHttpRequest 上报

原理:   使用fetch或者XMLHttpRequest直接发 HTTP 请求,数据格式可以是 JSON 或表单数据,GET/POST 都行。

代码示例:

js
 体验AI代码助手
 代码解读
复制代码
// fetch版
fetch('https://logserver.com/collect', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ event: 'click', userId: 123 })
});

优点:

缺点:

适用场景:

3. navigator.sendBeacon

原理:   专门为这种场景设计的 API,可以在页面卸载(比如跳转、关闭)时,异步且可靠地把数据发送到服务器,不阻塞页面卸载流程。

代码示例:

navigator.sendBeacon('https://logserver.com/collect', JSON.stringify({ event: 'unload', userId: 123 }));

优点:

缺点:

适用场景:

4. WebSocket 上报

原理:   建立长连接,把日志实时推送到服务器。

优点:

缺点:

适用场景:

总结

方式优势劣势常用场景
+ GIF简单兼容只能 GET,小数据量曝光打点
fetch/XHR灵活可靠受 CORS 限制错误日志、性能上报
sendBeacon页面关闭也能发兼容性略差,简单数据离开页面上报
WebSocket实时性强成本高游戏、IM 实时上报

实际开发里,我们会根据业务场景,多种方式结合使用:普通打点用fetch,页面 unload 用sendBeacon,曝光用Image兜底,再加一些重试机制,做到不丢、不卡、可靠。

以上就是前端JS日志采集的几种方式盘点的详细内容,更多关于前端JS日志采集方式的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文