2026 年 9 月有人问我们,既然有 CrUX 的真实用户数据,还要不要自己做监控。答案是都要,但用途不一样。合成监控解决有没有变差,真实用户监控解决用户到底什么感受。
合成监控是什么
固定地点、固定设备、固定网络条件,定时跑同一个页面。
它的好处是可重复。今天和昨天的数据可以直接比,因为条件没变。上线之后性能掉了,它能第一时间发现。
坏处是它只代表一个假想用户。真实用户的设备、网络、浏览器版本千差万别,合成数据测不到长尾。
真实用户监控是什么
在页面上埋一段脚本,用浏览器的 Performance API 采集每个访客的指标,上报到服务器。
它能按设备、地区、网络类型分组,看到中位数和 75 分位。CrUX 就是 Google 用自己的数据做的同类东西。
坏处是数据脏。用户切后台、网络中断、脚本被拦截,都会产生异常值,需要清洗。
两者的偏差有多大
我们对比过一个站,合成监控显示 LCP 1.9 秒,真实用户 75 分位是 3.6 秒。
原因很简单:合成用的是城市宽带加中端设备,真实用户里有三成在三四线城市的 4G 网络上,还有一部分用着三年前的安卓机。
这个偏差不是误差,是结构性的。合成数据只能代表一部分用户。
一个容易忽略的细节
RUM 数据里有种情况会被算错:用户打开页面后切到后台,页面被浏览器冻结,采集到的 LCP 会异常大。
处理办法是上报时带上页面可见性状态,把切后台的样本单独标记,分析时排除。这类样本能占 5% 到 10%,不清洗会拉偏 75 分位。
我们的组合
核心页面选三个,合成监控每天跑,发现回归就告警。
真实用户数据看两个维度:按设备分组和按地区分组。移动端和 PC 分开看,差距通常很大。
采样率不用太高。日访问一万的站,采 10% 就足够稳定,全量采反而增加上报开销。
自建 RUM 的最小方案
用官方的 web-vitals 库采集三个指标,页面卸载时用 sendBeacon 上报,服务端存一张表。
一个前端加一个后端接口,半天能写完。数据量不大,一张表能存一年。
采集时带上设备类型、网络类型、页面路径、浏览器版本。这几个维度决定了后面能不能分析。
一个态度
监控的目的不是收集数据,是在出问题时能快速定位。
只有合成监控,你会漏掉真实用户的糟糕体验。只有真实用户数据,你会看不出是哪次上线导致的。
两个都做,成本不高,判断会清楚很多。真正的门槛不是技术,是有人愿意每周看一眼数据。
元析智能
为软件公司做 SEO 和 GEO 优化