线上数据 vs 实验室数据:为什么大多数 Core Web Vitals 的争论都会失败

大多数关于性能的争论,都是因为人们使用了错误的数据集。

有人看真实用户的结果,有人看实验室模拟的结果。两者都是正确的,因为它们回答的是不同的问题。

如果你无法明确指出你所使用的数据集,那么你不是在进行诊断,而是在争论。

理解其中的区别:

  • 线上数据 (Field data) 告诉你真实用户在大规模场景下是否遇到了问题。它包含了手机性能差和移动网络信号不佳等情况。
  • 实验室数据 (Lab data) 告诉你他们为什么会遇到问题。它提供受控的追踪 (traces) 和可重复的测试。

像 LCP、INP 和 CLS 这样的 Core Web Vitals 是结果指标。它们告诉你发生了什么,而不是为什么发生。

不要再使用平均值了。请使用第 75 百分位数 (75th percentile)。一个网站对你来说可能感觉很快,但它仍然可能不及格,因为第 75 百分位数考虑了慢速网络和低端设备的情况。

使用以下流程来解决性能问题:

  1. 线上数据:确认问题确实存在并确定其影响范围。
  2. 实验室数据:隔离出一个可以测试的原因。
  3. 线上数据:根据最初的证据验证修复效果。

将你的结论与证据相匹配:

  • 如果用户体验不佳:检查 Search Console 的趋势。
  • 如果是模板导致的问题:查看相似 URL 是否也存在失败情况。
  • 如果 LCP 慢是因为服务器:使用实验室追踪来查找文档响应延迟。
  • 如果 INP 不达标:使用 DevTools 查找长任务 (long tasks)。
  • 如果是发布导致了性能退化:将时间点与你的部署日志进行关联。

不要依赖单次 Lighthouse 运行的结果。不要用桌面端的测试结果来解释移动端的失败。不要把“感觉变快了”当作证据。

请遵循以下步骤:

  • 用一句话明确你的数据集。
  • 确认影响范围。在证明不是模板问题之前,先假设是模板问题。
  • 识别约束因素。是服务器、渲染路径,还是第三方资源?
  • 进行尽可能小的测试,以证明你的假设是错误的。

使用实验室数据来寻找瓶颈。使用线上数据来证明瓶颈已消除。

Source: https://dev.to/jeremy-burgos/field-vs-lab-data-why-most-core-web-vitals-arguments-are-dataset-confusion-5d6e