- 前言
- 1. 先明确要分析什么
- 2. 先认识核心指标
- 3. Chrome 中各工具怎么分工
- 4. 开始录制前的准备
- 5. 分析页面加载性能
- 6. 分析点击、输入与滚动卡顿
- 7. Performance 录制结果怎么看
- 8. 用 Network 面板拆解请求耗时
- 9. 常见问题与优化方向
- 10. 分析内存持续增长
- 11. 给业务代码添加自定义标记
- 12. 实验室数据与真实用户数据
- 13. 一套可复用的排查流程
- 14. 常见误区
- 15. 记录模板与检查清单
- 16. Fiddler Everywhere 适合什么场景
- 总结
- 参考
前言
优化网页性能时,最容易出现的误区是:打开 Lighthouse,看见分数不高,就开始压图片、删代码。这样有时有效,但也可能改了很多地方,却没有解决真正影响用户体验的问题。
更稳妥的思路应该是:
先定义慢在哪里 |
这篇笔记主要记录如何用 Chrome DevTools 分析三类问题:
- 页面第一次打开很慢;
- 点击、输入、切换页面时反应迟钝;
- 滚动或动画掉帧,页面使用一段时间后越来越卡。
Chrome 不同版本的按钮位置和文字可能略有变化,但分析思路基本一致。本文重点不是记住界面,而是建立一套可以重复使用的排查方法。
1. 先明确要分析什么
“网站很慢”不是一个可以直接分析的问题。录制前最好先把现象改写成一个可重复的场景。
例如:
场景 A:首次打开文章详情页,首屏大图出现很晚。 |
每次只分析一个场景,并记录:
- 页面 URL 和代码版本;
- 使用的 Chrome 版本;
- 桌面或移动设备视口;
- 网络与 CPU 限速设置;
- 是否禁用缓存;
- 从哪里开始操作,到哪里结束;
- 重复几次可以稳定复现。
如果场景本身不能稳定复现,后面的火焰图再详细,也很难判断优化是否真的有效。
2. 先认识核心指标
2.1 Core Web Vitals
目前最重要的三个 Core Web Vitals 是 LCP、INP 和 CLS。判断站点整体是否达标时,应观察真实用户数据的第 75 百分位,并把移动端和桌面端分开看。
| 指标 | 它回答的问题 | 良好 | 需要改进 | 较差 |
|---|---|---|---|---|
LCP(Largest Contentful Paint) |
页面主要内容多久可见 | ≤ 2.5 s |
2.5~4 s |
> 4 s |
INP(Interaction to Next Paint) |
用户交互后多久看到下一帧反馈 | ≤ 200 ms |
200~500 ms |
> 500 ms |
CLS(Cumulative Layout Shift) |
页面是否发生意外跳动 | ≤ 0.1 |
0.1~0.25 |
> 0.25 |
可以用一句话记住:
LCP 看加载,INP 看响应,CLS 看稳定。 |
需要注意:
LCP不是“所有资源加载完毕”,而是视口内最大内容元素完成绘制的时间;INP需要真实交互,单纯刷新页面不会自动得到有代表性的 INP;CLS没有单位,数值来自布局偏移的累计,不是毫秒;- 一次本地测试只能说明当前机器和当前操作,不能代替真实用户数据。
2.2 其他常见指标
| 指标 | 含义 | 使用时要注意什么 |
|---|---|---|
TTFB |
从发起导航到收到 HTML 第一个字节 | 高 TTFB 常与服务器、网络、重定向或缓存有关 |
FCP |
第一个 DOM 内容首次绘制 | 只说明页面开始出现内容,不代表主要内容已经可用 |
DOMContentLoaded |
HTML 解析完成,并等待 defer 与模块脚本执行后触发对应事件 |
是技术事件,不等于用户已经看到完整页面 |
load |
页面触发 load 事件 |
也不等于页面此刻才“可用” |
TBT |
FCP 到可交互阶段之间,长任务超出 50 ms 部分的总和 | 常用作实验室环境下 INP 的代理,但两者不能画等号 |
| Long task | 主线程连续执行超过 50 ms 的任务 | 长任务会推迟输入处理和下一帧绘制 |
| FPS / frame time | 动画和滚动是否流畅 | 60 Hz 屏幕每帧预算约 16.7 ms,更高刷新率预算更小 |
不要只盯着 DOMContentLoaded 或 load。页面可能很早触发 load,但主线程仍被大段 JavaScript 占用;也可能 load 很晚,用户却早已能正常阅读和操作。
3. Chrome 中各工具怎么分工
Chrome DevTools 里与性能相关的面板很多,不需要每次全部打开。
| 工具 | 主要用途 | 适合回答的问题 |
|---|---|---|
Performance |
录制加载或交互过程,查看时间线、主线程、渲染、Web Vitals 和 Insights | 到底是哪一段时间、哪个任务导致慢? |
Network |
查看请求瀑布图、大小、优先级、发起者和分阶段耗时 | 是服务器慢、资源太大,还是请求发现得太晚? |
Lighthouse |
自动审计并给出性能、无障碍、SEO 等建议 | 页面有哪些值得先检查的通用问题? |
Performance monitor |
实时观察 CPU、JS 堆、DOM 节点、事件监听器和布局次数 | 页面运行时是否持续增长或频繁布局? |
Memory |
堆快照、分配时间线、查找 detached DOM | 是否存在内存泄漏,什么对象没有释放? |
Rendering |
查看渲染统计、绘制区域、布局偏移等调试信息 | 掉帧是否与重绘、布局偏移或滚动有关? |
推荐分工:
Lighthouse:快速体检 |
旧版本 Chrome 中的 Audits 面板已经由 Lighthouse 面板取代。本文后面所说的性能录制,主要指 Performance 面板,不是 Lighthouse 报告。
旧教程里还可能出现一个独立的 Performance Insights 面板;较新的 Chrome 已把这些诊断能力整合到 Performance 面板左侧的 Insights 中,所以不必再寻找单独面板。
4. 开始录制前的准备
性能数据很容易受到环境干扰。正式比较优化前后结果时,至少做好下面几件事。
使用尽量干净的环境
- 使用无痕窗口,减少扩展程序和已有缓存的干扰;
- 关闭与测试无关的标签页和占用 CPU 的程序;
- DevTools 可以独立停靠到单独窗口,避免页面可视区域频繁变化;
- 保持浏览器版本、视口大小和页面数据一致。
无痕模式并不等于“绝对没有干扰”,但通常比日常使用的浏览器环境更干净。
固定网络、CPU 与缓存条件
在 Performance 的 Capture settings 或 Network 面板中,可以设置网络和 CPU 限速。测试移动端体验时,不要只用高性能电脑的 No throttling。
例如可以固定为:
视口:移动端尺寸 |
这里没有一个适合所有项目的万能配置。最重要的是把配置写进测试记录,并在优化前后保持一致。
较新的 DevTools 还提供 CPU calibration,可以根据当前电脑生成更贴近低端或中端移动设备的限速档位。如果界面中有该功能,团队可以先校准再固定测试档位;但它仍然只是实验室模拟,不能替代真机。
冷缓存和热缓存分开测
- 勾选
Disable cache:更接近首次访问或缓存未命中的情况; - 允许缓存:更接近重复访问;
Disable cache通常只在 DevTools 打开时生效;- 不要把两种结果混在一起比较。
不要只跑一次
同一场景建议运行 3~5 次,先看中位数和结果范围。后台进程、垃圾回收、网络波动都可能让某一次结果异常。
5. 分析页面加载性能
下面是一套最常用的首屏加载录制流程。
- 打开目标页面和 DevTools;
- 进入
Performance面板; - 在 Capture settings 中确认 Network、CPU、Screenshots 等设置;
- 使用“Record and reload”按钮开始录制并刷新页面;
- DevTools 通常会在
load后数秒自动停止;若要覆盖更长的 SPA 初始化或延迟加载过程,应改用普通 Record,完成场景后再手动 Stop; - 先看 Core Web Vitals 和
Insights,再逐层查看 Network 与 Main 轨道; - 记录 LCP 元素、关键请求、长任务和主要时间消耗。
分析加载性能时,可以按这几个问题往下追:
LCP 慢 |
如果 LCP 元素是一张首屏大图,需要继续检查:
- 图片是否比实际显示尺寸大很多;
- 是否使用了合适的现代格式与压缩;
- 是否被懒加载到发现太晚;
- HTML 中是否能尽早发现它;
- 是否被 CSS、字体或 JavaScript 阻塞显示;
preload或fetchpriority是否真的用于明确的关键资源,而不是滥用。
如果主要时间花在 TTFB,压缩前端图片通常不是第一优先级,应先看服务器处理、CDN、缓存、重定向和网络位置。
6. 分析点击、输入与滚动卡顿
加载录制解决不了所有问题。按钮点击慢、输入框卡、切换标签页卡顿,需要录制运行时交互。
- 先打开
Performance面板的 Live metrics; - 按照真实用户路径执行点击、输入、展开菜单、切换路由等操作;
- 观察 INP、Interactions 和 Layout shifts 是否出现异常;
- 找到可以稳定复现的动作后,点击 Record;
- 只录制问题动作前后几秒,完成后立即 Stop;
- 在时间线中选择对应交互,再查看输入延迟、处理时间和呈现延迟;
- 下钻到 Main 轨道,确认是哪个事件处理器、框架更新、布局或绘制占用了时间。
一次交互变慢,通常可以拆成三段:
输入延迟:事件已经发生,但主线程还在忙,处理器迟迟不能开始 |
对应的优化方向并不相同:
- 输入延迟高:优先找交互前正在执行的长任务;
- 处理时间高:拆分事件处理逻辑,减少同步计算和不必要的状态更新;
- 呈现延迟高:检查大范围样式重算、布局、绘制和过大的 DOM。
如果问题是滚动或动画不流畅,可以同时关注:
- FPS 和 Frames 轨道;
- 主线程是否持续满载;
- 是否反复触发 Layout / Recalculate Style;
- Paint 区域是否过大;
- 动画是否在修改会触发布局或绘制的属性。
7. Performance 录制结果怎么看
面对一张很长的时间线,不要一开始就钻进最深的函数。推荐按“概览 → 时间段 → 任务 → 代码”逐层缩小范围。
7.1 先看概览和 Insights
先回答这些问题:
- LCP、INP、CLS 哪一项有问题?
- 问题发生在加载、交互还是滚动阶段?
- CPU 是短时尖峰,还是长时间满载?
- Network 是否有明显的长请求或串行请求链?
- Screenshots 中,页面在哪个时间点才出现主要内容?
Insights是否指出渲染阻塞请求、LCP 分解、布局偏移、第三方代码等线索?
Insights 很适合提供调查入口,但它是线索,不是最终结论。点击某条 Insight 后,应回到对应的网络请求、主线程事件和源代码确认因果关系。
7.2 再看 Network 轨道
Network 轨道可以把请求和主线程活动放在同一时间线上。重点看:
- HTML、CSS、字体、首屏图片什么时候开始请求;
- 是否存在很长的请求依赖链;
- 关键资源是否被低优先级或较晚发现;
- 第三方脚本是否在首屏阶段占用网络和主线程;
- 资源完成下载以后,为什么还没有及时绘制。
如果需要看请求的 DNS、连接、TLS、TTFB 和下载耗时,应切换到 Network 面板的 Timing 详情。
7.3 最后下钻 Main 主线程
Main 轨道是性能分析的核心。它是一张火焰图:
- 横向宽度代表耗时;
- 上下堆叠代表调用关系;
- 顶层任务包含它触发的脚本、样式、布局和绘制工作;
- 红色角标或长任务标记通常值得优先检查。
选择一个事件后,底部常见视图包括:
| 视图 | 适合看什么 |
|---|---|
Summary |
当前事件的耗时、来源文件、调用栈和时间分解 |
Bottom-up |
哪些叶子函数累计消耗最多,适合找热点 |
Call tree |
从入口到子调用的完整路径,适合理解“是谁调用了它” |
Event log |
按时间查看事件,适合过滤某类活动 |
还要分清两个时间:
Self time:函数自身执行的时间;Total time:函数自身加上所有子调用的总时间。
一个函数的 Total time 很大,但 Self time 很小,通常说明真正的耗时在它调用的子函数里。
8. 用 Network 面板拆解请求耗时
Network 面板适合回答“资源为什么来得晚”。建议先打开面板,再刷新页面,必要时勾选 Disable cache 和 Preserve log。
优先检查这些列:
Name:资源名称;Status:状态码或失败原因;Type:document、script、stylesheet、font、image、fetch 等;Initiator:是谁发起了请求;Size:传输大小及缓存情况;Time:总耗时;Priority:浏览器分配的优先级;Waterfall:请求之间的先后和重叠关系。
选中请求后,在 Timing 中常见的阶段可以这样理解:
| 阶段 | 可能说明的问题 |
|---|---|
Queueing / Stalled |
请求排队、连接数或优先级影响,也可能在等待可用连接 |
DNS Lookup |
域名解析耗时 |
Initial connection / SSL |
TCP、TLS 建连耗时 |
Request sent |
发送请求所用时间,通常较短 |
Waiting (TTFB) |
网络往返加服务器生成响应的时间 |
Content Download |
下载响应体的时间,受资源大小和带宽影响 |
常见判断方式:
Waiting (TTFB) 很长 |
按住 Shift 并悬停某个请求,可以查看它的发起者和依赖关系。对于“为什么这张图到很晚才请求”这类问题,Initiator 往往比单看耗时更有价值。
9. 常见问题与优化方向
| 现象 | 重点证据 | 常见原因 | 常见优化方向 |
|---|---|---|---|
| LCP 很慢 | LCP 元素、LCP 分解、Network 瀑布图 | TTFB 高、资源发现晚、首图太大、主线程阻塞 | 服务端缓存/CDN、压缩首图、尽早发现关键资源、减少阻塞工作 |
| INP 很差 | Interactions、长任务、事件处理器调用栈 | 主线程繁忙、回调计算量大、一次更新范围过大 | 拆分长任务、减少同步计算、降低渲染范围、必要时使用 Worker |
| CLS 很高 | Layout shifts 轨道及受影响元素 | 图片无尺寸、异步插入内容、字体替换、广告位未预留 | 设置 width/height 或 aspect-ratio、预留空间、谨慎插入顶部内容 |
| JavaScript 执行太久 | Main、Bottom-up、Coverage | 包体大、初始化工作多、重复计算、第三方脚本 | 代码拆分、延迟非关键逻辑、删除未使用代码、减少第三方依赖 |
| 强制同步布局 | Recalculate Style / Layout 反复出现 | 交替读取布局信息和修改 DOM,形成 layout thrashing | 批量读取、批量写入,避免循环中读写交错 |
| 滚动或动画掉帧 | FPS、Frames、Paint、Rendering stats | 每帧脚本过重、大面积绘制、动画触发布局 | 减少每帧工作,优先使用 transform/opacity,缩小绘制范围 |
| 页面越用越卡 | JS heap、DOM Nodes、Listeners 持续增长 | 事件未解绑、定时器未清理、detached DOM、缓存无限增长 | 清理生命周期资源、比较堆快照、限制缓存 |
| 第三方代码占用高 | 3rd-party 活动、请求域名、长任务 | 统计、广告、客服或 A/B 脚本过多 | 延迟加载、按需加载、减少供应商、设置性能预算 |
优化时不要一次改十项。先选影响最大的瓶颈,保留录制文件和基线数据,只改一个主要变量,再用相同条件复测。
10. 分析内存持续增长
如果页面第一次打开正常,但使用一段时间后越来越慢,可以先打开 Performance monitor:
- 按
Ctrl + Shift + P(macOS 为Command + Shift + P); - 输入并选择
Show Performance monitor; - 重复执行怀疑泄漏的操作;
- 观察 JS heap size、DOM Nodes、Event listeners 是否只升不降。
这只能帮助确认“可能在增长”,不能直接找到谁在持有对象。继续进入 Memory 面板:
- 操作前获取一次 Heap snapshot;
- 重复打开/关闭组件、切换路由等动作;
- 在合适时机触发垃圾回收,再获取第二次快照;
- 使用
Comparison对比对象数量和 retained size; - 搜索
Detached,检查已经离开 DOM、却仍被 JavaScript 引用的节点; - 沿 Retainers 路径找到仍然持有对象的监听器、闭包、缓存或全局变量。
常见泄漏来源包括:
- 组件销毁后没有移除事件监听器;
setInterval、订阅或观察器没有清理;- 全局数组和缓存只增不减;
- DOM 已移除,但闭包仍保存其引用;
- 单页应用路由切换后,旧页面对象仍可达。
内存值有锯齿并不一定是泄漏,JavaScript 垃圾回收本来就会让堆大小上升后再下降。真正需要关注的是:多轮相同操作并完成回收后,基线仍持续抬高。
11. 给业务代码添加自定义标记
页面复杂时,只看浏览器内部事件很难知道某段业务逻辑从哪里开始。可以使用 User Timing API 添加标记:
performance.mark('filter:start'); |
重新录制后,filter interaction 会出现在 Performance 的 Timings 轨道中。这样可以把业务阶段和网络、JavaScript、布局、绘制放在同一条时间线上分析。
标记名称最好使用稳定的业务语义,例如:
route-change |
不要在高频循环里无节制地打标记;标记本身也属于观测代码,应保持简单和可控。
12. 实验室数据与真实用户数据
Performance 的本地录制和本地 Lighthouse 运行得到的是实验室数据,优点是环境可控、容易复现、可以看到调用栈;缺点是只代表一次设备、一次网络和一条操作路径。Performance 首页在条件允许时也可以显示 CrUX field data,不能把这部分与本地录制混为一谈。
真实用户监控(RUM)或 Chrome User Experience Report 一类的 field data,反映真实设备和网络上的长期分布,但通常不直接告诉你具体哪一行代码造成问题。
两者应该配合使用:
真实用户数据:告诉我问题影响谁、影响多大、发生在哪些页面 |
特别要注意:
- 实验室只刷新页面时,测不到完整的真实 INP;
- 没有继续交互时,本地 CLS 可能低估页面整个生命周期的布局偏移;
- 某个高端开发机上的“流畅”,不代表低端移动设备也流畅;
- Performance 面板能显示 field data 时,应把它与本地结果对照,但并非所有 URL 都有足够数据。
13. 一套可复用的排查流程
我更推荐下面这个顺序。
第一步:把问题写成可重复场景
首次访问 /article/xxx |
第二步:记录基线
运行 3~5 次,记录中位数、范围和异常值,不只保存一个 Lighthouse 分数。
第三步:从宏观指标缩小时间范围
先确认是 LCP、INP、CLS、网络、内存还是帧率问题,再选择对应的几秒钟。
第四步:找到直接证据
网络问题 → Waterfall、Initiator、Timing |
第五步:提出可以验证的假设
不要写“可能是前端太慢”,要写成:
首屏图片直到主脚本执行后才开始请求,导致 LCP 资源发现延迟约 800 ms。 |
第六步:只改一个主要变量并复测
使用相同 URL、构建、设备、网络、CPU、缓存状态和操作步骤。比较的不只是总分,还要看原问题对应的指标与时间线是否真的改变。
第七步:回到真实用户数据验证
上线后继续看真实用户分布和回归情况。一次本地录制变快,只能证明实验场景改善,不能自动证明所有用户都改善。
14. 常见误区
误区 1:Lighthouse 100 分就是性能分析完成
Lighthouse 是很好的自动体检工具,但分数会受环境和版本影响,也不能替代真实交互录制。重点是具体指标、审计证据和用户场景,不是追求一个漂亮的整数。
误区 2:一次录制就能下结论
单次结果可能被网络抖动、垃圾回收或后台程序影响。至少重复几次,并保留完全相同的测试条件。
误区 3:所有黄色 JavaScript 块都要优化
JavaScript 执行并不天然有问题。需要优先处理的是阻塞关键内容、用户交互或下一帧的长任务和热点代码。
误区 4:DOMContentLoaded 和 load 越早,体验一定越好
这两个事件是页面生命周期标记,不等于主要内容可见,也不等于交互及时。应结合 LCP、INP、CLS 和真实场景判断。
误区 5:模拟移动端就等于真机
DevTools 的网络和 CPU 限速适合可重复比较,但不能完整模拟移动设备的 GPU、温控、内存、无线网络和系统调度。重要页面仍应在真实设备上复查。
误区 6:看到建议就直接加 preload 或 will-change
preload、fetchpriority、will-change 都有成本。只对经过测量确认的关键资源或动画使用,滥用可能增加竞争、内存和合成层数量。
15. 记录模板与检查清单
可以用下面的模板记录一次性能分析:
页面 / 场景: |
最后用这份清单自查:
- [ ] 问题场景可以稳定复现;
- [ ] 优化前后使用相同的测试配置;
- [ ] 冷缓存和热缓存没有混在一起;
- [ ] 至少重复测试 3 次;
- [ ] 已从指标定位到具体时间段;
- [ ] 已找到请求、任务或代码层面的证据;
- [ ] 没有只凭 Lighthouse 总分判断;
- [ ] 修改后重新录制并对比;
- [ ] 重要改动在真实设备或真实用户数据中继续验证。
16. Fiddler Everywhere 适合什么场景
Fiddler Everywhere 是一款运行在 Windows、macOS 和 Linux 上的跨平台 Web 调试代理。它位于客户端与服务器之间,可以捕获、检查、修改和重放 HTTP(S) 流量,也支持 WebSocket、Server-Sent Events 和 gRPC 等协议。它的重点是“请求和响应经过网络时发生了什么”,而不是浏览器内部如何执行 JavaScript、计算布局和绘制页面。
可以这样区分它和 Chrome DevTools:
页面为什么掉帧、哪个函数占满主线程 |
它适合解决什么问题
- 跨应用抓包:不仅能观察 Chrome,还能分析桌面客户端、命令行程序以及经过代理配置的移动设备流量;
- 检查协议细节:查看请求方法、URL、Headers、Cookie、请求体、响应体、状态码、大小和 Timing;
- 重放和修改请求:把已捕获的请求发送到 Composer,修改参数、Headers 或 Body 后重新执行;
- 模拟异常场景:使用 Rules 和断点修改请求或响应、重定向地址、替换返回内容,验证客户端面对错误响应时的行为;
- 保存排障证据:把相关会话整理成 Snapshot,便于之后复现,或在清理敏感信息后交给团队分析;
- 分析远程设备:在同一网络内配置代理后,可以观察手机、平板或其他设备发出的 HTTP(S) 请求。
它对 Web 性能分析的价值主要集中在网络层。例如:
| 想回答的问题 | 在 Fiddler 中重点看什么 |
|---|---|
| API 为什么慢 | Timing、首字节等待、响应体大小 |
| 请求参数是否正确 | Query、Headers、Cookie、Body |
| 压缩和缓存是否生效 | Content-Encoding、Cache-Control、ETag 与传输大小 |
| 某个错误能否稳定复现 | Replay / Composer |
| 前端如何处理异常响应 | Rules、断点和响应替换 |
| 手机上的请求与浏览器是否一致 | Remote device capture 与会话对比 |
如果问题是 JavaScript 长任务、INP、强制同步布局、Paint 或掉帧,Fiddler 看不到浏览器主线程调用栈,这时仍然应该回到 Chrome DevTools Performance。
一个最小使用流程
- 根据目标选择捕获方式:只看网页可以使用独立浏览器捕获;分析其他应用可选择系统代理、专用终端或显式代理;
- 开始捕获后立即按域名、进程、状态码或资源类型过滤,避免无关流量淹没问题请求;
- 选中目标会话,通过 Inspectors 检查请求、响应和 Timing;
- 需要复现时使用 Replay;需要修改参数时发送到 Composer;
- 需要模拟错误或替换内容时再创建 Rules,不要一开始就修改全部流量;
- 完成后关闭捕获,保存必要证据,并清理不再需要的敏感会话。
HTTPS 抓包的安全注意事项
使用系统代理模式时,Fiddler Everywhere 默认只捕获非加密 HTTP;若要在系统层捕获并解密 HTTPS,需要安装并信任它生成的根 CA。独立浏览器或专用终端捕获使用预配置环境,通常不需要把该 CA 安装到系统证书库。解密 HTTPS 时,Fiddler 会作为本地中间代理解密并重新签发站点证书,所以要清楚自己扩大了对应调试环境的信任边界。
使用时建议:
- 只从官方安装包生成和安装 Fiddler CA;
- 个人开发环境优先信任到当前用户证书存储,不要无必要地安装到整台机器;
- 不要为了省事全局忽略服务器证书错误;
- 公司设备、受管设备或涉及证书固定的应用,应先遵守组织安全策略;
- 不再需要 HTTPS 捕获时,可以关闭该功能并移除 Fiddler CA;
- Snapshot、导出文件和截图可能包含账号、Cookie、Token、内网地址及业务数据,分享前必须脱敏。
Fiddler Everywhere 不同版本和许可等级提供的捕获方式、协作功能可能不同,实际使用时应以当前官方文档和产品界面为准。
总结
Chrome 做 Web 性能分析的核心不是“会点录制”,而是把模糊的“慢”变成一条证据链:
用户场景 |
如果是第一次排查,可以记住最短路径:
加载慢:Performance + Network |
性能优化最怕凭感觉。先测量,再定位,再优化,最后复测,才能知道时间是不是花在了真正影响用户的地方。
参考
- Chrome DevTools:Analyze runtime performance
- Chrome DevTools:Performance features reference
- Chrome DevTools:Network features reference
- Chrome DevTools:Performance monitor
- Chrome DevTools:Fix memory problems
- Chrome for Developers:Introduction to Lighthouse
- web.dev:Web Vitals
- web.dev:Getting started with measuring Web Vitals
- Fiddler Everywhere:Introduction
- Fiddler Everywhere:Capturing modes
- Fiddler Everywhere:HTTPS settings
- Fiddler Everywhere:Composer
- Fiddler Everywhere:Modify traffic with Rules