网淘吧来吧,欢迎您!

返回首页 微信
微信
手机版
手机版

Web Perf

2026-03-28 新闻来源:网淘吧 围观:56
电脑广告
手机广告

网站性能审计

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

首先:验证MCP工具是否可用

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

请用户将其添加到他们的MCP配置中:

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

关键指引

  • 断言式验证:通过检查网络请求、DOM或代码库来验证声明——然后明确地陈述发现。
  • 推荐前先验证:在建议移除之前,确认某些内容未被使用。
  • 量化影响:使用从洞察中估算的节省。不要优先处理影响为0毫秒的更改。
  • 跳过非问题:如果渲染阻塞资源的预估影响为0毫秒,请记录但不要建议采取行动。
  • 具体明确:请说“将hero.png(450KB)压缩为WebP格式”,而不是“优化图片”。
  • 严格划分优先级:一个LCP为200毫秒且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)

工作流程

复制此清单以跟踪进度:

Audit Progress:
- [ ] Phase 1: Performance trace (navigate + record)
- [ ] Phase 2: Core Web Vitals analysis (includes CLS culprits)
- [ ] Phase 3: Network analysis
- [ ] Phase 4: Accessibility snapshot
- [ ] Phase 5: Codebase analysis (skip if third-party site)

第一阶段:性能追踪

  1. 导航到目标URL:

    navigate_page(url: "<target-url>")
    
  2. 启动一个带重新加载的性能跟踪以捕获冷加载指标:

    performance_start_trace(autoStop: true, reload: true)
    
  3. 等待跟踪完成,然后检索结果。

故障排除:

  • 如果跟踪返回为空或失败,请先使用navigate_page验证页面是否正确加载
  • 如果洞察名称不匹配,请检查跟踪响应以列出可用的洞察

第二阶段:核心网页指标分析

使用performance_analyze_insight提取关键指标。

注意:洞察名称可能因Chrome DevTools版本而异。如果某个洞察名称不起作用,请检查insightSetId从跟踪响应中发现可用的洞察。

常见的洞察名称:

指标洞察名称查找内容
LCPLCP 分解最大内容绘制时间的细分:TTFB、资源加载、渲染延迟
CLSCLS 问题来源导致布局偏移的元素(无尺寸图像、注入内容、字体切换)
渲染阻塞渲染阻塞CSS/JS 阻塞首次绘制
文档延迟文档延迟服务器响应时间问题
网络依赖网络请求依赖图延迟关键资源的请求链

示例:

performance_analyze_insight(insightSetId: "<id-from-trace>", insightName: "LCPBreakdown")

关键阈值(良好/需改进/差):

  • TTFB:< 800毫秒 / < 1.8秒 / > 1.8秒
  • FCP:< 1.8秒 / < 3秒 / > 3秒
  • LCP:< 2.5秒 / < 4秒 / > 4秒
  • INP:< 200毫秒 / < 500毫秒 / > 500毫秒
  • TBT:< 200毫秒 / < 600毫秒 / > 600毫秒
  • CLS:< 0.1 / < 0.25 / > 0.25
  • 速度指数:< 3.4秒 / < 5.8秒 / > 5.8秒

第三阶段:网络分析

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

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

寻找:

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

如需详细请求信息:

get_network_request(reqid: <id>)

第四阶段:可访问性快照

获取可访问性树快照:

take_snapshot(verbose: true)

标记高级别问题:

  • 缺失或重复的ARIA ID
  • 对比度差的元素(对照WCAG AA标准检查:普通文本需达到4.5:1,大文本需达到3:1)
  • 焦点陷阱或缺失的焦点指示器
  • 无无障碍名称的交互元素

第五阶段:代码库分析

如果审计的是无法访问代码库的第三方网站,则跳过此阶段。

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

检测框架与打包工具

通过搜索配置文件来识别技术栈:

工具配置文件
Webpackwebpack.config.jswebpack.*.js
Vitevite.config.jsvite.config.ts
Rolluprollup.config.jsrollup.config.mjs
esbuildesbuild.config.js、或使用esbuild
的构建脚本Parcel.parcelrcpackage.json
(parcel字段)next.config.js,next.config.mjs
Nuxtnuxt.config.js,nuxt.config.ts
SvelteKitsvelte.config.js
Astroastro.config.mjs

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

Tree-Shaking & 死代码

  • Webpack: 检查mode: 'production'sideEffects在 package.json 中的设置、usedExports优化
  • Vite/Rollup: Tree-shaking 默认启用;检查摇树优化选项
  • 查找:桶文件(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. 核心网页指标摘要- 包含指标、数值和评级(良好/需改进/差)的表格
  2. 主要问题- 按优先级排序的问题列表,附带预估影响(高/中/低)
  3. 建议- 具体、可操作的修复方案,附带代码片段或配置更改
  4. 代码库发现- 检测到的框架/打包器,优化机会(若无代码库访问权限则省略)
免责申明
部分文章来自各大搜索引擎,如有侵权,请与我联系删除。
打赏
文章底部电脑广告
手机广告位-内容正文底部
上一篇:Google Cloud Platform 下一篇:Memory System V2

相关文章

您是本站第291031名访客 今日有259篇新文章/评论