Skip to content

目录

核心知识点

  • LCP, INP, CLS
  • 使用 DevTools 进行性能分析

一、核心Web指标

核心Web指标是Google提出的一组以用户为中心的指标,用于量化网页的关键体验维度。关注这些指标并进行优化,能显著提升用户满意度。

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

  • 度量对象: 加载性能。它测量的是视口内可见的最大图像或文本块完成渲染的时间点,相对于页面首次开始加载的时间。
  • 目标: 提供良好的用户体验,LCP应在 2.5秒 内发生。
  • 意义: 一个快速的LCP能让用户感觉到页面的主要内容很快就加载出来了,认为页面是有用的。

2. INP (Interaction to Next Paint) - 下次绘制的交互

  • 度量对象: 交互响应性。它测量的是从用户发起交互(如点击、轻触或键入)到浏览器绘制下一帧之间所经过的时间。INP衡量的是整个页面生命周期内的所有交互,并报告最慢的那一次(或接近最慢的)。
  • 目标: 提供良好的用户体验,INP应低于 200毫秒
  • 意义: 一个低的INP意味着页面对用户的操作响应迅速,感觉流畅不卡顿。(注意:INP已于2024年3月取代FID成为核心Web指标)

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

  • 度量对象: 视觉稳定性。它测量的是页面在整个生命周期内,所有意外发生的布局偏移的累积分数。
  • 目标: 提供良好的用户体验,CLS分数应低于 0.1
  • 意义: 一个低的CLS分数意味着页面元素稳定,不会因为图片、广告或字体加载而突然跳动,避免用户误点或阅读困难。

二、使用 DevTools 进行性能分析

Chrome DevTools是发现和解决性能问题的强大盟友。我们主要使用两个面板:Lighthouse和Performance。

1. Lighthouse:自动化审计与报告

Lighthouse 是一个自动化的网站审计工具,它能快速生成一份关于性能、可访问性、SEO等方面的综合报告,非常适合作为性能分析的起点。

如何使用:

  1. 打开Chrome DevTools (F12或Ctrl/Cmd+Shift+I)。
  2. 切换到 Lighthouse 面板。
  3. 在 Categories 中勾选 Performance。
  4. 选择 Device (通常建议先分析 Mobile,因为移动端网络和性能限制更多)。
  5. 点击 Analyze page load 按钮。

如何解读报告:

  • 总分: Lighthouse会给出一个0-100的性能总分,让你对网站性能有一个直观的印象。
  • 核心指标: 报告会清晰地列出 LCP, CLS, TBT (Total Blocking Time, 可作为INP的代理指标)等指标的测量值,并用绿、橙、红三色标示其表现好坏。
  • 优化建议 (Opportunities): 这是报告最有价值的部分。Lighthouse会给出具体的优化建议,例如"减少未使用的JavaScript"、"启用文本压缩"、"为图片提供适当的尺寸"等,并预估这些优化能节省的加载时间。

Lighthouse的角色: 发现和初步度量问题。它告诉你"哪里"慢了,并给出宏观的优化方向。

2. Performance:深入分析与验证

当你通过Lighthouse发现了问题后,就需要使用Performance面板来深入分析问题的根本原因。它能记录下页面加载或交互过程中的所有事件,并以时间线的形式呈现,让你洞察浏览器工作的每一个细节。

如何使用:

  1. 切换到 Performance 面板。
  2. 点击左上角的 录制按钮 或按下 Ctrl/Cmd + E。为了分析加载性能,你可以点击 Start profiling and reload page 按钮。
  3. 让页面完成加载,或者执行你想要分析的交互操作(比如点击一个卡顿的按钮)。
  4. 点击 Stop 停止录制。

如何分析火焰图:

  • 时间线概览: 顶部是时间线,包含CPU活动、帧率(FPS)等。出现红色长条通常意味着发生了长时间运行的任务。
  • Timings & Experience:
    • 在 Timings 泳道中,你可以清晰地看到 LCP 标记,准确定位最大内容绘制的发生时刻。
    • 在 Experience 泳道中,DevTools会标记出每一次 Layout Shift。点击它可以查看详情,找出导致布局偏移的具体元素,帮助你修复CLS问题。
  • 主线程 (Main): 这是分析的重点。
    • 长任务 (Long Tasks): 任何执行时间超过50ms的任务都会被标记为长任务(右上角有红色三角)。这些任务会阻塞主线程,导致页面无法响应用户输入,是造成INP差的主要原因。你需要关注这些黄色的"Scripting"块,看是哪些JavaScript代码执行时间过长。
    • 火焰图颜色: 黄色代表脚本执行,紫色代表渲染和布局,绿色代表绘制。通过分析各个部分所占的时间,可以判断性能瓶颈是在JS执行阶段还是在渲染阶段。

Performance面板的角色: 深入分析和验证问题。它帮助你定位造成LCP延迟、INP过高或CLS发生的具体代码和事件,从而进行精确优化。

基于 VitePress 的本地知识库