Web Vitals 指标概览
Flashduty RUM 支持以下 核心 Web Vitals 指标:| 指标 | 全称 | 说明 |
|---|---|---|
| LCP | 最大内容绘制 | 衡量页面主要内容的加载性能 |
| INP | 交互到下一帧延迟 | 衡量整体交互响应性能 |
| CLS | 累计布局偏移 | 衡量视觉稳定性 |
| FCP | 首次内容绘制 | 衡量首次内容渲染时间 |
| FID | 首次输入延迟 | 衡量页面交互性能(辅助指标) |
| TTFB | 首次字节时间 | 衡量服务器响应速度(辅助指标) |
指标计算方法
LCP - 最大内容绘制
LCP - 最大内容绘制
计算方法: 从页面开始加载(
navigationStart)到最大可见内容元素(如图片、文本块)渲染完成的时间。用例: 监控主页或关键页面内容加载速度,识别资源加载瓶颈。FCP - 首次内容绘制
FCP - 首次内容绘制
计算方法: 测量从用户第一次导航到页面到页面内容的任何部分在屏幕上呈现的时间。用例: 用于测量感知加载速度,有助于向用户保证某些事情正在发生。
INP - 交互到下一帧延迟
INP - 交互到下一帧延迟
计算方法: 测量所有用户交互(点击、轻触、键盘输入)到下一帧渲染的延迟时间。用例: 评估页面整体交互响应性能,优化高延迟交互场景。
CLS - 累计布局偏移
CLS - 累计布局偏移
计算方法: 统计所有意外布局偏移的分数(偏移距离 × 影响区域)。用例: 识别动态内容或广告导致的页面跳动问题。
FID - 首次输入延迟
FID - 首次输入延迟
计算方法: 从用户第一次交互开始到浏览器处理事件的时间差。用例: 优化交互密集型页面(如表单、导航菜单)的响应速度。
监控单页应用 (SPA)
对于单页应用程序,RUM 浏览器 SDK 通过loading_type 属性区分 initial_load 和 route_change 两种导航类型。
- History SPA
- Hash SPA
如果网页上的某个交互操作导致 URL 发生变化,但页面并未完全刷新,RUM SDK 会使用
loading_type:route_change 启动一个新的 view。RUM 使用 History API 来跟踪 URL 的变化。自定义性能监控
组件级性能测量
使用customVital API 监控特定组件或交互的性能,适用于:
- 关键组件渲染时间
- 用户交互响应时间
- 业务流程耗时
性能时间点记录
使用addTiming API 记录关键时间点,适用于:
- 关键元素加载(如首屏图片)
- 用户首次交互(如首次滚动)
- 业务节点时间戳
注意事项
命名规范
- 指标名称避免空格、特殊字符
- 使用描述性命名(如
login_form_render) - 保持命名一致性
性能影响控制
- 控制自定义指标数量
- 避免频繁计时
- 合理设置采样率
常见问题
页面加载时间异常
页面加载时间异常
- 检查慢加载资源(图片、脚本)
- 排查第三方脚本阻塞
- 分析长时间运行的 JavaScript
活动状态判定不准确
活动状态判定不准确
- 确认是否存在频繁的后台请求
- 检查长连接或流式请求的处理
- 使用
excludedActivityUrls排除干扰
自定义指标问题
自定义指标问题
- 验证指标名称是否符合规范
- 确保计时器正确启停
- 检查异步场景的时间戳准确性
Web Vitals 指标为空
Web Vitals 指标为空
| 原因 | 说明 |
|---|---|
| 后台页面 | 页面在新标签页或无焦点窗口中打开,导致 INP 和 LCP 无法收集 |
| SPA 路由切换 | 在 loading_type:route_change 时,核心 Web Vitals 指标不会重新收集 |
| 引入方式 | 页面在 SDK 完全初始化前就已加载完成 |
| 页面生命周期 | 页面在指标收集完成前就被关闭或导航离开 |
| 浏览器兼容性 | 旧版本浏览器不支持某些 Web Vitals API |
| 页面无内容 | 页面没有可测量的内容元素(如空白页面) |