对我司自研的前端监控系统的前端SDK进行总结
当SDK拿到错误的所有信息时需要上报到服务端,有几种方式上报服务端
通过xhr上报,如果设置成异步的时候,当用户跳转新页面或者关闭页面时就会丢失当前这个请求,如果设置成同步,又会让页面造成卡顿的现象
特点:
**MDN:**可用于通过HTTP将少量数据异步传输到Web服务器,统计和诊断代码通常要在 unload 或者 beforeunload 事件处理器中发起一个同步 XMLHttpRequest 来发送数据。同步的 XMLHttpRequest 迫使用户代理延迟卸载文档,并使得下一个导航出现的更晚。下一个页面对于这种较差的载入表现无能为力
特点:
POST请求Beacon API不提供相应的回调,因此后端返回最好省略response bodyrequestIdleCallback延时上报。建议将三种方式结合一起上报:
requestIdleCallback延时上报。目前我采用的是git+sendBeacon方式进行上报。
优先级高的情况下采用gif,在requestIdleCallback浏览器空闲时进行上报。
优先级不高的情况下采用sendBeacon,在页面离开时或缓存到一定数量后进行上报。