[ 前端监控 SDK 实战 (下半) | 青训营笔记]

130 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天

监控前端性能与异常

性能指标监控

利用performance和PerformanceObserver来监测一些标准的渲染性能数据

Performance接口可以获取到当前页面中与性能相关的信息。它是 High Resolution Time API 的一部分,同时也融合了 Performance Timeline API、Navigation Timing 、 User Timing和 Resource Timing API。

PerformanceObserver 用于监测性能度量事件,在浏览器的性能时间轴记录新的 performance entry 的时候将会被通知。

Js错误监控

可利用window:error event和unhandledrejection来检测全局Js错误

EventTarget.addEventListener() 方法将指定的监听器注册到 EventTarget 上,当该对象触发指定的事件时,指定的回调函数就会被执行。事件目标可以是一个文档上的元素 Element、Document 和 Window,也可以是任何支持事件的对象(比如 XMLHttpRequest)。

当 Promise 被 reject 且没有 reject 处理器的时候,会触发 unhandledrejection 事件;这可能发生在 window 下,但也可能发生在 Worker 中。这对于调试和为意外情况提供后备错误处理非常有用。

静态资源错误监控

可通过hook xhr和fetch对象来监听请求发生时的错误。

XMLHttpRequest(XHR)对象用于与服务器交互。通过 XMLHttpRequest 可以在不刷新页面的情况下请求特定 URL,获取数据。这允许网页在不影响用户操作的情况下,更新页面的局部内容。

Fetch API 提供了一个 JavaScript 接口,用于访问和操纵 HTTP 管道的一些具体部分,例如请求和响应。它还提供了一个全局 fetch() 方法,该方法提供了一种简单,合理的方式来跨网络异步获取资源。

封装一个通用的sdk

前端监控流程概述

经过数据采集,而后组装上报,再清洗储存,最后在进行数据消费。

数据上报

封装一个用于上报收集数据的上报函数 function creation (report:({name:string,data:any})=>void)

Navigator.sendBeacon()

navigator.sendBeacon() 方法可用于通过 HTTP POST 将少量数据 异步 传输到 Web 服务器。

它主要用于将统计数据发送到 Web 服务器,同时避免了用传统技术(如:XMLHttpRequest)发送分析数据的一些问题。