Google Core Web Vitals(核心网页指标)

Core Web Vitals(CWV)是 Google 推出的一组用于衡量网页用户体验的关键性能指标,目前由 ‌LCP、INP 和 CLS‌ 三大核心指标构成。‌FID 已于 2024 年 3 月被 INP 正式取代‌,不再作为核心指标使用 ‌。

一、核心三大指标(LCP/INP/CLS)

1. LCP(Largest Contentful Paint,最大内容绘制)‌

  • ‌含义‌:衡量页面中最大可见内容元素(如主图、大标题、视频等)渲染完成的时间,反映用户感知的"主要内容加载完成"时刻。
  • ‌目标‌:‌≤ 2.5 秒‌ ‌。
  • ‌优化建议‌:
    • 使用 WebP/AVIF 格式压缩图片;
    • 预加载关键资源(<link rel="preload">);
    • 启用 CDN 加速资源分发;
    • 优化服务器响应时间(TTFB < 800ms)‌。

‌2. INP(Interaction to Next Paint,交互到下一次绘制)‌

  • ‌含义‌:测量用户与页面交互(点击、按键、触摸等)后,浏览器完成下一次屏幕绘制的延迟,‌取代 FID 成为新的交互性核心指标‌。
  • ‌目标‌:‌< 200 毫秒‌ ‌。
  • ‌优化建议‌:
    • 拆分长任务(避免主线程阻塞 > 50ms);
    • 使用 Web Worker 处理复杂计算;
    • 优化事件处理函数,避免耗时操作;
    • 采用事件节流/防抖、被动事件监听器 ‌。
      ⚠️ 注意:FID(首次输入延迟)仅测量‌首次交互‌的输入延迟,而 INP 覆盖‌所有交互‌并包含处理与绘制延迟,因此更全面‌。

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

  • ‌含义‌:衡量页面加载过程中所有‌意外布局偏移‌的总得分,反映视觉稳定性。
  • ‌目标‌:‌≤ 0.1‌ ‌。
  • ‌优化建议‌:
    • 为图片、视频等元素指定宽高属性;
    • 避免动态插入内容(如广告、横幅)导致布局跳动;
    • 使用 transform 实现动画而非修改布局属性 。

补充说明

  • ‌FID 已淘汰‌:虽在部分旧资料中仍被提及,但 Google 官方已明确 INP 为新一代交互性指标 ‌89。
  • ‌工具推荐‌:
    • Lighthouse(Chrome DevTools 内置)
    • PageSpeed Insights
    • Web Vitals Chrome 扩展
      如需检测当前网站的 Core Web Vitals 表现,可直接使用上述工具进行分析。

二、基础关键指标(TTFB/FCP)

这两个指标是上述核心指标的基础,直接影响首屏加载速度。
1. TTFB (Time to First Byte) - 首字节时间

  • 含义: 浏览器发出请求到收到服务器第一个字节的时间。它反映了服务器的响应速度、网络延迟和 DNS 查询时间。
  • 目标: < 800 毫秒(理想情况 < 600ms)。
  • 如何优化:
    • 使用服务端渲染 (SSR) 或静态站点生成 (SSG)。
    • 开启服务器缓存(如 Redis)和 CDN 缓存。
    • 优化数据库查询,减少后端处理时间。

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

  • 含义: 浏览器渲染出第一个内容(文本、图片、SVG 等,非白屏)的时间。它给用户"页面开始加载"的视觉反馈。
  • 目标: < 1.8 秒。
  • 如何优化:
    • 内联关键 CSS (Critical CSS)(直接绑定在 html 上的,不用等待下载解析css文件),移除未使用的 CSS(很多项目引入了庞大的 CSS 框架(如 Bootstrap, Tailwind)或第三方库,但实际页面可能只用了其中 10% 的类名。这些"死代码"不仅浪费带宽,还增加了浏览器的解析负担。)。
    • 减少 JavaScript 对主线程的阻塞(使用 async 或 defer 加载脚本)。
    • 优化服务器响应时间(即优化 TTFB)。

三、其他重要性能指标

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

  • 含义:衡量页面从开始加载到完全具备交互能力所需的时间。它不仅要求页面内容已渲染,还要求主线程足够空闲,能够可靠、快速地响应用户的下一步操作。
  • 目标:通常建议 < 5 秒
  • 为什么重要: 一个页面可能看起来已经加载完毕(FCP/LCP 已完成),但如果主线程仍被 JavaScript 长任务阻塞,用户点击按钮时可能没有任何反应。TTI 就是用来衡量这种"假死"状态的时长。
  • 如何优化:
    • TTI 关注的是页面何时变得完全可交互,优化核心是尽快让主线程空闲下来。
    • 代码分割与懒加载:将 JavaScript 代码按路由或组件进行拆分,只加载当前页面所需的代码。
    • 延迟加载非关键脚本:对分析、广告等第三方脚本使用 async 或 defer,或延迟到用户交互后再加载。
    • 减少主线程工作:与优化 INP 类似,通过拆分长任务、使用 Web Worker 等方式减少主线程的负担。

2.TBT(总阻塞时间)‌:作为实验室指标,用于估算主线程被长任务(>50ms)阻塞的总时长,是 FID 的替代指标

指标汇总:

指标 衡量维度 核心定义 理想阈值
LCP(Largest Contentful Paint) 加载速度 最大内容绘制 ≤ 2.5 秒
INP(Interaction to Next Paint) 交互响应 交互到下一次绘制 ≤ 200 毫秒
CLS(Cumulative Layout Shift) 视觉稳定性 累积布局偏移 ≤ 0.1
FCP (First Contentful Paint) 加载速度 首次内容绘制 ≤ 2.5 秒
TTFB (Time to First Byte) 加载速度 首字节时间 < 800 毫秒
TTI (Time to Interactive) 加载速度 可交互时间 < 5秒
TBT 加载速度 总阻塞时间 < 200ms
相关推荐
|晴 天|2 小时前
Vue 3 + LocalStorage 实现博客游戏化系统:成就墙、每日签到、积分商城
前端·vue.js·游戏
花椒技术3 小时前
从7S到4S,我们如何系统性降低直播播放延迟
性能优化·程序员
逾明3 小时前
Claude Code及Codex的MCP安装和Mastergo MCP的使用
前端·mcp
LovroMance3 小时前
如何进行组件封装
前端
難釋懷3 小时前
Redis服务器端优化-慢查询优化
前端·redis·bootstrap
sghuter3 小时前
Chrome如何重塑Web标准未来
前端·chrome
渣渣xiong3 小时前
从零开始:前端转型AI agent直到就业第十四天-第十七天
前端·人工智能
changshuaihua0013 小时前
React 入门
前端·javascript·react.js
兰为鹏3 小时前
做前端需求总结出的非常好用的skill
前端