直接打开 Performance 面板录制操作可精准定位真实瓶颈。一、录制需模拟用户真实卡顿场景,勾选Screenshots、Memory和Network,用Low frequency采样,单次3–5秒;二、重点观察FPS图表掉红、主线程长任务及内存/网络异常。

直接打开 Performance 面板录制操作,就能看到真实瓶颈在哪——不是猜,是看。
一、先录一段“能代表问题”的操作
别随便点几下就停。要模拟用户真实卡顿场景:比如拖动 SVG、点击菜单、滚动长列表。录制前注意:
- 勾选 Screenshots(截图),方便对照帧画面判断卡在哪一帧
- 勾选 Memory 和 Network(如果怀疑资源加载拖慢)
- 用 Low frequency 采样,减少分析开销,不影响定位主线程问题
- 单次录制控制在 3–5 秒,聚焦问题阶段,避免数据太杂
二、看火焰图里最刺眼的三块区域
停止录制后,重点盯紧这三个指标横条:
- FPS 图表:持续掉到红色(
- Main 线程:找超过 50ms 的长任务(标红或加粗),尤其是连续堆叠的黄色/紫色块
- Recalculate Style + Layout:这两项加起来占任务时长 80% 以上,说明 CSS 或 DOM 操作触发了频繁重排重绘
例如:一个 398ms 的长任务中,210ms 花在 Recalculate Style,185ms 在 Layout——这基本锁定是选择器太复杂或内联样式频繁读写 offsetWidth 导致的强制同步布局。
三、钻进 Bottom-Up 或 Call Tree 找具体函数
点击那个又长又宽的任务,在下方切换到 Bottom-Up 标签:
- 按 Self Time 排序,排第一的就是纯消耗,没被子函数摊薄
- 找到耗时高的 JS 函数名(比如
initCarousel、renderChart),点开看调用链 - 留意带红色三角图标的操作——那是 DevTools 标出的“强制同步布局”,说明代码里写了
element.offsetWidth这类会打断渲染流水线的读取
四、结合 Network 和 Memory 做交叉验证
性能问题常是多因素叠加。比如主线程卡住,未必全是 JS 错:
- 切换到 Network 标签,看是否有个 2MB 的 PNG 在首屏阻塞渲染?它可能触发了后续 JS 等待图片加载完才执行
- 勾选了 Memory 录制的话,观察内存曲线是否阶梯式上涨——可能是事件监听器没清理,或 canvas 缓存没释放
- 若发现某次操作后内存不回落,再切到 Memory 面板拍快照比对,查 Detached DOM 节点
不复杂但容易忽略


















