线上数据 vs 实验室数据:为什么大多数 Core Web Vitals 的争论都会失败
大多数关于性能的争论,都是因为人们使用了错误的数据集。
有人看真实用户的结果,有人看实验室模拟的结果。两者都是正确的,因为它们回答的是不同的问题。
如果你无法明确指出你所使用的数据集,那么你不是在进行诊断,而是在争论。
理解其中的区别:
- 线上数据 (Field data) 告诉你真实用户在大规模场景下是否遇到了问题。它包含了手机性能差和移动网络信号不佳等情况。
- 实验室数据 (Lab data) 告诉你他们为什么会遇到问题。它提供受控的追踪 (traces) 和可重复的测试。
像 LCP、INP 和 CLS 这样的 Core Web Vitals 是结果指标。它们告诉你发生了什么,而不是为什么发生。
不要再使用平均值了。请使用第 75 百分位数 (75th percentile)。一个网站对你来说可能感觉很快,但它仍然可能不及格,因为第 75 百分位数考虑了慢速网络和低端设备的情况。
使用以下流程来解决性能问题:
- 线上数据:确认问题确实存在并确定其影响范围。
- 实验室数据:隔离出一个可以测试的原因。
- 线上数据:根据最初的证据验证修复效果。
将你的结论与证据相匹配:
- 如果用户体验不佳:检查 Search Console 的趋势。
- 如果是模板导致的问题:查看相似 URL 是否也存在失败情况。
- 如果 LCP 慢是因为服务器:使用实验室追踪来查找文档响应延迟。
- 如果 INP 不达标:使用 DevTools 查找长任务 (long tasks)。
- 如果是发布导致了性能退化:将时间点与你的部署日志进行关联。
不要依赖单次 Lighthouse 运行的结果。不要用桌面端的测试结果来解释移动端的失败。不要把“感觉变快了”当作证据。
请遵循以下步骤:
- 用一句话明确你的数据集。
- 确认影响范围。在证明不是模板问题之前,先假设是模板问题。
- 识别约束因素。是服务器、渲染路径,还是第三方资源?
- 进行尽可能小的测试,以证明你的假设是错误的。
使用实验室数据来寻找瓶颈。使用线上数据来证明瓶颈已消除。
