前端监控sdk实战 | 青训营笔记

40 阅读3分钟

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

为什么聊前端监控

什么是前端监控

前端监控是指尽可能采集用户从输入url到看到页面以及后续交互过程中产生的数据、性能指标及异常事件,并上报给平台

为什么需要它

通过对页面数据的分析,帮助开发者快速定位性能较差页面的问题,方便后续优化。

当页面性能较差时,很可能影响用户留存量。

到底监控了什么

  1. 性能指标
  2. 异常事件
  3. 用户行为

前端监控之常用性能指标

web性能标准的诞生

早期网页由于纯静态,没有对应标准,后面交互越来越复杂,页面性能被开发者纳入考虑范围。

2010年8月W3C成立了web性能工作组,制定了一系列web性能标准,并应用到更多环境中。

传统的性能指标

依赖navigating timing1/2,加载过程中各阶段性能耗时来衡量性能。

以用户为中心的性能指标

传统性能指标专注于技术细节,但很难反应用户需求,加载速度快不代表用户体验好。创建以用户为中心的性能指标,直接提升用户体验。

  • FP(First Paint) 首屏渲染
  • FCP(First Contentful Paint) 首次有内容渲染
  • FMP(First Meaningful Paint) 首次有意义内容渲染
  • TTI(Time to Interactive) 从开始加载到主要子资源完成渲染,并能快速可靠相应用户输入所需时间。很重要,TTI越小用户体验一般越小
  • SI(Speed Index) 可视区域加载速度,检测加载体验(比如优先渲染大面积内容用户体验会较好)
  • FID(First Input Delay) 第一次与用户交互直到实际处理时间时的时间
  • LCP(Largest Contentful Paint) 最大内容在可视区域内变得可见的时间点(一般认为最大一段内容对于理解页面元素最有用)
  • TBT(Total Blocking Time) 主线程在空闲之前的繁忙程度,页面无法响应用户输入的时间有多少(从FCP到TTI之间所有长任务的阻塞时间总和)
  • CLS(Cumulative Layout Shift) 加载期间视口中元素的移动程度

前端监控之前端常见异常

  • 静态资源错误
    • 静态资源在拉取和加载时出问题,比如网络问题,导致图片裂开,404,视频加载失败等。
  • 请求异常
    • 异步拉取静态资源失败也属于请求错误
    • http状态码>=400一般代表客户端或服务端错误
  • Js错误
  • 白屏异常
    • 一般没有浏览器的标准化方法监听,通过Dom树来自行判断

监控前端性能与异常

  • 性能指标监控
    • MDN有关于window.xx接口监控性能
  • Js错误监控
    • MDN也有……
    • 一般会添加window.addEventListener监听
  • 静态资源错误监控
    • 类似Js
  • 请求异常监控
    • Fetch接口
    • XMLHR接口

封装一个前端监控SDK

流程

数据采集 -> 组装上报 -> 清洗存储 -> 数据消费