OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  web-perf:使用 Chrome DevTools 深度分析网页性能表现

web-perf:使用 Chrome DevTools 深度分析网页性能表现

 
  migration ·  2026-02-23 07:30:13 · 3 次点击  · 0 条评论  

名称: web-perf
描述: 使用 Chrome DevTools MCP 分析网页性能。测量核心 Web 指标(FCP、LCP、TBT、CLS、速度指数),识别渲染阻塞资源、网络依赖链、布局偏移、缓存问题和无障碍访问差距。当需要审计、分析、调试或优化页面加载性能、Lighthouse 分数或网站速度时使用。


网页性能审计

使用 Chrome DevTools MCP 工具审计网页性能。此技能专注于核心 Web 指标、网络优化和高层次的无障碍访问差距。

第一步:确认 MCP 工具可用性

开始前请先运行此步骤。 尝试调用 navigate_pageperformance_start_trace。如果不可用,请停止——chrome-devtools MCP 服务器未配置。

请用户将以下内容添加到其 MCP 配置中:

"chrome-devtools": {
  "type": "local",
  "command": ["npx", "-y", "chrome-devtools-mcp@latest"]
}

核心准则

  • 保持断言性:通过检查网络请求、DOM 或代码库来验证主张,然后明确陈述发现。
  • 建议前先验证:在建议移除前,先确认某物确实未被使用。
  • 量化影响:使用基于洞察的预估节省。不要优先处理影响为 0ms 的更改。
  • 跳过非问题:如果渲染阻塞资源的预估影响为 0ms,记录下来但不要建议采取行动。
  • 保持具体:说“将 hero.png (450KB) 压缩为 WebP”,而不是“优化图片”。
  • 严格优先排序:一个 LCP 为 200ms 且 CLS 为 0 的网站已经非常优秀——请如实告知。

快速参考

任务 工具调用
加载页面 navigate_page(url: \"...\")
开始追踪 performance_start_trace(autoStop: true, reload: true)
分析洞察 performance_analyze_insight(insightSetId: \"...\", insightName: \"...\")
列出请求 list_network_requests(resourceTypes: [\"Script\", \"Stylesheet\", ...])
请求详情 get_network_request(reqid: <id>)
无障碍快照 take_snapshot(verbose: true)

工作流程

复制此清单以跟踪进度:

审计进度:
- [ ] 阶段 1:性能追踪(导航 + 记录)
- [ ] 阶段 2:核心 Web 指标分析(包含 CLS 元凶)
- [ ] 阶段 3:网络分析
- [ ] 阶段 4:无障碍快照
- [ ] 阶段 5:代码库分析(如果是第三方网站则跳过)

阶段 1:性能追踪

  1. 导航到目标 URL:
    navigate_page(url: \"<目标-url>\")

  2. 启动性能追踪并重新加载以捕获冷加载指标:
    performance_start_trace(autoStop: true, reload: true)

  3. 等待追踪完成,然后获取结果。

故障排除:
- 如果追踪返回为空或失败,请先用 navigate_page 验证页面是否正确加载。
- 如果洞察名称不匹配,请检查追踪响应以列出可用的洞察。

阶段 2:核心 Web 指标分析

使用 performance_analyze_insight 提取关键指标。

注意: 洞察名称可能因 Chrome DevTools 版本而异。如果某个洞察名称无效,请检查追踪响应中的 insightSetId 以发现可用的洞察。

常见洞察名称:

指标 洞察名称 关注点
LCP LCPBreakdown 最大内容绘制时间;TTFB、资源加载、渲染延迟的细分
CLS CLSCulprits 导致布局偏移的元素(无尺寸的图片、注入的内容、字体交换)
渲染阻塞 RenderBlocking 阻塞首次绘制的 CSS/JS
文档延迟 DocumentLatency 服务器响应时间问题
网络依赖 NetworkRequestsDepGraph 延迟关键资源的请求链

示例:

performance_analyze_insight(insightSetId: \"<来自追踪的id>\", insightName: \"LCPBreakdown\")

关键阈值(良好/需改进/差):
- TTFB: < 800ms / < 1.8s / > 1.8s
- FCP: < 1.8s / < 3s / > 3s
- LCP: < 2.5s / < 4s / > 4s
- INP: < 200ms / < 500ms / > 500ms
- TBT: < 200ms / < 600ms / > 600ms
- CLS: < 0.1 / < 0.25 / > 0.25
- 速度指数: < 3.4s / < 5.8s / > 5.8s

阶段 3:网络分析

列出所有网络请求以识别优化机会:

list_network_requests(resourceTypes: [\"Script\", \"Stylesheet\", \"Document\", \"Font\", \"Image\"])

重点关注:

  1. 渲染阻塞资源<head> 中没有 async/defer/media 属性的 JS/CSS。
  2. 网络链:由于依赖其他资源首先加载而发现较晚的资源(例如,CSS 导入、JS 加载的字体)。
  3. 缺少预加载:未预加载的关键资源(字体、首屏图片、关键脚本)。
  4. 缓存问题:缺少或弱的 Cache-ControlETagLast-Modified 标头。
  5. 大负载:未压缩或过大的 JS/CSS 包。
  6. 未使用的预连接:如果被标记,请通过检查是否有任何请求发送到该源来验证。如果请求为零,则确定未使用——建议移除。如果存在请求但加载较晚,预连接可能仍有价值。

获取详细请求信息:

get_network_request(reqid: <id>)

阶段 4:无障碍快照

获取无障碍树快照:

take_snapshot(verbose: true)

标记高层次差距:
- 缺失或重复的 ARIA ID。
- 对比度差的元素(对照 WCAG AA 标准:普通文本 4.5:1,大文本 3:1)。
- 焦点陷阱或缺失焦点指示器。
- 交互元素缺少无障碍名称。

阶段 5:代码库分析

如果审计没有代码库访问权限的第三方网站,请跳过此阶段。

分析代码库以了解可以在何处进行改进。

检测框架与打包器

搜索配置文件以识别技术栈:

工具 配置文件
Webpack webpack.config.js, webpack.*.js
Vite vite.config.js, vite.config.ts
Rollup rollup.config.js, rollup.config.mjs
esbuild esbuild.config.js, 包含 esbuild 的构建脚本
Parcel .parcelrc, package.json (parcel 字段)
Next.js next.config.js, next.config.mjs
Nuxt nuxt.config.js, nuxt.config.ts
SvelteKit svelte.config.js
Astro astro.config.mjs

同时检查 package.json 中的框架依赖项和构建脚本。

Tree-Shaking 与死代码

  • Webpack:检查 mode: 'production'、package.json 中的 sideEffectsusedExports 优化。
  • Vite/Rollup:默认启用 Tree-shaking;检查 treeshake 选项。
  • 寻找:桶文件(index.js 重新导出)、整体导入的大型工具库(lodash、moment)。

未使用的 JS/CSS

  • 检查 CSS-in-JS 与静态 CSS 提取。
  • 查找 PurgeCSS/UnCSS 配置(Tailwind 的 content 配置)。
  • 识别动态导入与急切加载。

Polyfills

  • 检查 @babel/preset-env 目标和 useBuiltIns 设置。
  • 查找 core-js 导入(通常过大)。
  • 检查 browserslist 配置是否目标范围过广。

压缩与最小化

  • 检查 terseresbuildswc 最小化。
  • 在构建输出或服务器配置中查找 gzip/brotli 压缩。
  • 检查生产构建中的源映射(应为外部或禁用)。

输出格式

按以下格式呈现发现:

  1. 核心 Web 指标摘要 - 包含指标、数值和评级(良好/需改进/差)的表格。
  2. 主要问题 - 按优先级排序的问题列表,附带预估影响(高/中/低)。
  3. 建议 - 具体、可操作的修复方案,附带代码片段或配置更改。
  4. 代码库发现 - 检测到的框架/打包器、优化机会(若无代码库访问权限则省略)。
3 次点击  ∙  0 人收藏  
登录后收藏  
目前尚无回复
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor