← 返回题目列表

真实用户监控 RUM 和实验室性能测试有什么区别?

中等 第 21 / 29 题 更新于 2026/07/29
前端性能RUMLighthouseWeb Vitals

简化版

RUM 是线上真实用户性能数据,能反映不同设备、网络、地域和浏览器下的真实体验;实验室性能测试是在受控环境中跑 Lighthouse、WebPageTest 等工具,适合复现问题和做上线前对比。两者互补:Lab 适合定位和回归,RUM 适合衡量真实体验和业务影响。

详细版

前端性能不能只看一种数据。实验室测试稳定、可重复,适合 CI 和调试;RUM 数据真实、覆盖广,适合判断用户是否真的变慢。

维度RUM实验室测试
数据来源真实用户浏览器固定设备和网络模拟
优点真实、覆盖广、可关联业务可重复、易定位、适合 CI
缺点噪声大、问题复现难不一定代表真实用户
常见工具web-vitals、Sentry、Datadog、自研埋点Lighthouse、WebPageTest、DevTools
import { onCLS, onINP, onLCP } from 'web-vitals'

onLCP(metric => reportMetric(metric))
onINP(metric => reportMetric(metric))
onCLS(metric => reportMetric(metric))

面试里答“性能监控”时,最好主动区分 RUM 和 Lab,这会显得你不是只会跑 Lighthouse。

完整版教学

一、RUM 解决什么问题

RUM 的全称是 Real User Monitoring,也就是真实用户监控。它运行在用户浏览器里,采集真实访问过程中的性能数据。

真实用户环境很复杂:有人用高端 Mac,有人用低端 Android;有人在 Wi-Fi 下访问,有人在地铁弱网中访问;有人命中缓存,有人首次访问。RUM 能看到这些真实差异。

二、实验室测试解决什么问题

实验室测试是在可控条件下测页面,例如固定网络、固定 CPU 降速、固定浏览器版本。它的优势是可重复。今天改代码前跑一次,改完再跑一次,可以比较差异。

实验室测试特别适合:

  • 上线前基准测试。
  • CI 性能回归检查。
  • 对比两个实现方案。
  • 用 DevTools 录制主线程和网络瀑布图。

三、为什么两者不能互相替代

只看 Lab,可能会忽略真实用户问题。例如 Lighthouse 在桌面环境下表现很好,但低端手机上 INP 很差。

只看 RUM,也可能难以定位。RUM 告诉你“某些用户 LCP 变慢”,但具体慢在 DNS、图片、服务端还是 JS 执行,需要 Lab 和 DevTools 进一步复现。

四、RUM 应该采哪些指标

常见采集项包括:

指标含义用途
LCP最大内容渲染时间衡量主要内容出现速度
INP交互响应衡量点击、输入是否卡
CLS布局偏移衡量视觉稳定性
TTFB首字节时间判断服务端和网络延迟
long task长任务判断主线程阻塞
resource timing资源耗时定位慢资源

五、数据分析要看分位数

性能数据常用 p75、p90、p95。p75 表示 75% 的访问不超过这个值,常用于 Core Web Vitals 判断。

平均值容易误导。例如 90% 的用户很快、10% 的用户非常慢,平均值可能看起来还能接受,但慢用户已经很痛苦。

六、如何关联业务

性能监控最好不要只停在技术指标。可以把 LCP、INP 和转化率、跳出率、下单成功率关联起来。

function reportMetric(metric: { name: string; value: number; id: string }) {
  navigator.sendBeacon('/rum', JSON.stringify({
    name: metric.name,
    value: metric.value,
    page: location.pathname,
    connection: navigator.connection?.effectiveType,
    deviceMemory: navigator.deviceMemory
  }))
}

这样就能回答“哪些页面慢”“哪些用户慢”“慢是否影响业务”。

七、常见误区与追问

  • 误区:Lighthouse 分数高就说明性能好。 Lighthouse 是实验室数据,真实用户仍可能因为设备和网络差而体验很差。
  • 误区:RUM 数据波动就是埋点不准。 真实环境本来就有噪声,要用分位数、分组和趋势判断。
  • 误区:只采首页就够。 关键业务路径都要采,例如搜索、详情、结算和表单提交页。
  • 追问:为什么 Core Web Vitals 常看 p75? p75 能覆盖大多数用户体验,同时不会像 p95 那样过度受极端样本影响。
  • 追问:Lab 测试适合放在 CI 吗? 适合,但阈值要考虑波动,通常配合多次运行或容忍区间。
  • 追问:RUM 如何保护隐私? 不采集敏感内容,只采指标、页面类型、设备网络分组,并控制采样率。

八、加强记忆

RUM 看真实世界,Lab 看可重复实验。排查性能时先用 RUM 发现真实问题,再用 Lab 和 DevTools 复现定位,最后上线后继续用 RUM 验证收益。