网页性能和用户体验的关键指标

57 阅读4分钟

一、关键指标

1. FCP (First Contentful Paint) - 首次内容绘制

  • 定义:从页面开始加载到页面主要内容(如文本、图片、非空白 canvas 等)首次被渲染的时间。
  • 意义:用户看到页面开始“动起来”的时间,标志着加载过程的开始。
  • 良好阈值:< 1.8 秒

2. LCP (Largest Contentful Paint) - 最大内容绘制

  • 定义:记录视窗内最大内容元素(如大图、主标题、hero section)渲染完成的时间。
  • 意义:衡量加载体验的核心指标,代表用户感知页面主要内容加载完成的时间。
  • 良好阈值:< 2.5 秒

3. CLS (Cumulative Layout Shift) - 累积布局偏移

  • 定义:衡量页面在加载过程中视觉稳定性的指标,计算所有意外布局偏移的总和。
  • 公式CLS = 所有布局偏移分数的总和(偏移分数 = 影响范围 × 距离)
  • 意义:防止元素“跳动”(如图片加载后突然下移内容),提升用户体验。
  • 良好阈值:< 0.1

4. TTI (Time to Interactive) - 可交互时间

  • 定义:页面从开始加载到完全可交互的时间点,即主线程空闲,能快速响应用户输入(如点击、输入)。
  • 意义:衡量页面何时真正“可用”。
  • 良好阈值:< 3.8 秒

5. FID (First Input Delay) - 首次输入延迟

  • 定义:用户首次与页面交互(如点击按钮、链接)到页面实际开始处理该事件之间的时间延迟。
  • 意义:衡量页面对用户输入的响应速度(受主线程阻塞影响)。
  • 良好阈值:< 100 毫秒
  • 注意:FID 已被 INP (Interaction to Next Paint)  逐步取代,作为新的响应性指标。

6. TBT (Total Blocking Time) - 总阻塞时间

  • 定义:从 FCP 到 TTI 之间,所有长任务(Long Tasks > 50ms)的阻塞时间总和(每个长任务的阻塞时间 = 任务时长 - 50ms)。
  • 意义:量化主线程被阻塞的程度,间接反映页面卡顿情况。
  • 良好阈值:< 200 毫秒

7. FMP (First Meaningful Paint) - 首次有意义绘制

  • 定义:页面主要内容首次渲染完成的时间点。
  • 说明:FMP 是一个较早的指标,但由于算法复杂、可变性大,Google 已不再推荐使用,被 LCP 取代
  • 现状已弃用,建议关注 LCP。

二、 📊 总结对比表

指标中文名衡量重点良好阈值状态
FCP首次内容绘制内容开始出现< 1.8s推荐
LCP最大内容绘制主要内容加载完成< 2.5s推荐 ✅
CLS累积布局偏移视觉稳定性< 0.1推荐 ✅
TTI可交互时间页面完全可用< 3.8s推荐
FID首次输入延迟响应性(旧)< 100ms被 INP 取代
TBT总阻塞时间主线程阻塞< 200ms推荐(实验室指标)
FMP首次有意义绘制内容加载(旧)-已弃用 ❌

三、 📌 四大核心指标

  1. LCP(加载性能)
  2. FID / INP(响应性)
  3. CLS(视觉稳定性)
  4. SEO 表现

四、 ✅ 性能监控工具

1. React Developer Tools

  • 简介:React开发者工具,用于检查React组件树,并提供组件层级的渲染时间和更新频率等信息。
  • 功能亮点
    • 组件层级结构查看
    • 显示组件的“render”次数
    • 提供Profiler工具来记录和分析组件的渲染性能

2. Chrome DevTools的Performance面板

  1. 分析记录的数据
    • Overview部分:包括FPS(帧每秒)、CPU使用情况、NET(网络请求)以及堆栈信息。这有助于了解页面的整体性能状况。
    • 火焰图(Flame Chart) :展示了主线程上的所有活动,允许你查看每个函数调用所花费的时间。这对于识别性能瓶颈特别有用。
    • Bottom-Up视图:按照消耗时间从低到高排列所有的函数调用,便于发现最耗时的任务。
    • Call Tree视图:显示了按照调用顺序组织的性能数据,有助于理解哪些函数导致了较高的开销。
    • Event Log:列出了所有记录的事件,包括脚本执行、样式计算、布局、绘制等,帮助深入分析页面行为。
  2. 其他功能
    • Screenshots:如果启用,可以在概览图中看到页面加载过程中的视觉变化。
    • Network:显示网络请求的时间线,有助于分析资源加载性能。
    • Throttling:模拟不同的网络条件和设备性能,以测试页面在不同环境下的表现。