前端监控SDK开发| 青训营笔记

89 阅读2分钟

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

为什么要前端监控?

页面问题-网页加载时间慢、卡顿、图片裂开、网页白屏

  • 引入前端监控体系:对页面质量差进行分析与归因

常用性能指标

以用户为中心的性能指标

关注于用户真正关心什么?

1.发生了吗?

  • FP首屏时间-第一个像素点
  • FCP(First Contentful Paint)首次有内容的时间点

2.内容有用吗

  • LCP 最大内容在可视区域可见的时间点(交互按钮没出来也算,次要元素可以慢一点渲染出来)
  • FMP-首次绘制有意义内容的时间点(约20%不准确)
  • SI-Speed Index:页面可视区域加载速度,逐步增加体验感更好,检测页面的加载体验。(一般不会监控,性能损耗太大)

3.内容可用吗?

  • TBT-Total Blocking Time量化主线程在空闲之前的繁忙程度。页面无法响应用户的时间。从FCP到TTI之间所有长任务的阻塞时间的总和。 若任务超过50ms则认为长任务,超过50ms后的任务耗时,算作任务的阻塞时间。(用户会感受到)
  • TTI-内容可以交互时间点,Time to interactive

4.令人愉悦吗?

  • FID-First Input Delay:测量用户第一次与页面交互。-用户从加载完成后什么时候用到这个页面
  • CLS cumulative Layout Shift元素偏移:量化了在页面加载中,视口中元素的移动程度。突然的偏移越来越少越好。 会造成操作误触

常见异常

白屏、有些内容没有渲染出来

静态资源:

css、html、js/图片、音频、视频

请求异常:HTTP协议

状态码划分

  • 认为>=400 请求异常-fetch
  • 状态码0,边缘case。
  • 异常指标:请求成功率=请求成功数/(请求成功数+请求失败数)

JS错误

  • 影响正常渲染与交互

白屏异常

  • 可以通过判断DOM树粗略判断白屏是否发生

通常原因

  • 1.js错误
  • 2.请求异常或者静态加载失败
  • 3.js线程繁忙阻塞渲染任务

性能指标监控

利用Performance优先 +PerformanceObserve第二步

  • 先看官方文档
  • 再看技术方案
  • 最后coding

封装monitor

  • 1.起名字
  • 2.监听能力
  • 3.主动开启,而不是被动开启(创建出来就被开启)
  • 4.数据收集上报能力