11.前端监控

# 11.前端监控

# 前端可监控的类别

# 性能监控(监控页面性能)

  • 不同用户,不同机型和不同系统下的首屏加载时间
  • 白屏时间
  • http 等请求的响应时间
  • 静态资源整体下载时间
  • 页面渲染时间
  • 页面交互动画完成时间

# 用户数据监控

  • PV/UV: PV(page view):即页面浏览量或点击量;UV:指访问某个站点或点击某条新闻的不同 IP 地址的人数
  • 用户在每一个页面的停留时间
  • 用户通过什么入口来访问该网页
  • 用户在相应的页面中触发的行为

# 异常监控

  • Javascript 的异常监控
  • 样式丢失的异常监控

# 埋点上报

# 手动埋点

  • 调用埋点 SDK 的函数,在需要埋点的业务逻辑功能位置调用接口,上报埋点数据
  • 手动埋点的缺陷就是,项目工程量大

# 可视化埋点

  • 提供一个可视化交互的页面,输入为业务代码,在业务代码中自定义的增加埋点事件
  • 可视化埋点的缺陷就是可以埋点的控件有限,不能手动定制。

# 无埋点

  • 前端自动采集全部事件,上报埋点数据,由后端来过滤和计算出有用的数据。
  • 优点是前端只要一次加载埋点脚本
  • 缺点是流量和采集的数据过于庞大,服务器性能压力山大。

# 监听方法

# 监听某个 DOM 节点

const exposeReportClass = new exposeReport({
    scrollDom: "", // 滚动容器,建议指定一个滚动容器,不传默认为window
    watchDom: ".bookitem", // 监听的dom,建议使用class类,标签也支持
    time: 1000 // 停留有效时长ms
});
// 提供两个上报方法
exposeReportClass.didReport(() => {
    // 手动上报
    //callback
})
exposeReportClass.scrollReport(() => {
    // 滚动动上报
    //callback
})
//
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 为什么用 gif 埋点

  • 防止跨域 一般而言,打点域名都不是当前域名,所以所有的接口请求都会构成跨域。 而跨域请求很容易出现由于配置不当被浏览器拦截并报错,这是不能接受的。 但图片的 src 属性并不会跨域,并且同样可以发起请求。(排除接口上报)

  • 防止阻塞页面加载,影响用户体验

通常,创建资源节点后只有将对象注入到浏览器 DOM 树后,浏览器才会实际发送资源请求。反复操作 DOM 不仅会引发性能问题,而且载入 js/css 资源还会阻塞页面渲染,影响用户体验。

但是图片请求例外。构造图片打点不仅不用插入 DOM,只要在 js 中 new 出 Image 对象就能发起请求,而且还没有阻塞问题,在没有 js 的浏览器环境中也能通过 img 标签正常打点,这是其他类型的资源请求所做不到的。(排除文件方式)

  • 相比 PNG/JPG,GIF 的体积最小 最小的 BMP 文件需要 74 个字节,PNG 需要 67 个字节,而合法的 GIF,只需要 43 个字节。

同样的响应,GIF 可以比 BMP 节约 41%的流量,比 PNG 节约 35%的流量。

Last Updated: 9/25/2026, 2:08:32 PM