WebPerf: Loading Performance
JavaScript snippets for measuring web performance in Chrome DevTools. Execute with mcp__chrome-devtools__evaluate_script, capture output with mcp__chrome-devtools__get_console_message.
Scripts
- -
scripts/Back-Forward-Cache.js — Back/Forward Cache (bfcache) - INLINECODE3 — CSS Media Queries Analysis
- INLINECODE4 — Client-Side Redirect Detection
- INLINECODE5 — Content Visibility
- INLINECODE6 — Critical CSS Detection
- INLINECODE7 — Event Processing Time
- INLINECODE8 — First Contentful Paint (FCP)
- INLINECODE9 — Find Above The Fold Lazy Loaded Images
- INLINECODE10 — Find Images With Loading Lazy and Fetchpriority
- INLINECODE11 — Find non Lazy Loaded Images outside of the viewport
- INLINECODE12 — Find render-blocking resources
- INLINECODE13 — First And Third Party Script Info
- INLINECODE14 — First And Third Party Script Timings
- INLINECODE15 — Fonts Preloaded, Loaded, and Used Above The Fold
- INLINECODE16 — Inline CSS Info and Size
- INLINECODE17 — Inline Script Info and Size
- INLINECODE18 — JavaScript Execution Time Breakdown
- INLINECODE19 — Prefetch Resource Validation
- INLINECODE20 — Priority Hints Audit
- INLINECODE21 — Resource Hints Validation
- INLINECODE22 — Resource Hints
- INLINECODE23 — SSR Framework Hydration Data Analysis
- INLINECODE24 — Scripts Loading
- INLINECODE25 — Service Worker Analysis
- INLINECODE26 — Time To First Byte: Measure TTFB for all resources
- INLINECODE27 — Time To First Byte: Measure TTFB sub-parts
- INLINECODE28 — Time To First Byte: Measure the time to first byte
- INLINECODE29 — Validate Preload on Async/Defer Scripts
Descriptions and thresholds: INLINECODE30
Common Workflows
Complete Loading Performance Audit
When the user asks for a comprehensive loading analysis or "audit loading performance":
- 1. TTFB.js - Establish baseline server/network performance
- FCP.js - Check initial render timing
- Find-render-blocking-resources.js - Identify what's blocking rendering
- Critical-CSS-Detection.js - Validate CSS strategy
- Script-Loading.js - Audit script loading patterns
- Resource-Hints-Validation.js - Check optimization hints
Server/Backend Performance Investigation
When TTFB is slow or the user asks "why is my server slow":
- 1. TTFB.js - Measure overall TTFB
- TTFB-Sub-Parts.js - Break down into DNS, connection, server time
- Service-Worker-Analysis.js - Check for SW overhead impacting TTFB
- TTFB-Resources.js - Identify slow third-party or API endpoints
Font Loading Optimization
When the user asks about fonts, FOIT, FOUT, or font performance:
- 1. Fonts-Preloaded-Loaded-and-used-above-the-fold.js - Full font audit
- Resource-Hints-Validation.js - Verify font preloads are correct
- Find-render-blocking-resources.js - Check if fonts block rendering
Script Performance Deep Dive
When scripts are suspected to slow down the page:
- 1. Script-Loading.js - Identify blocking scripts and loading strategy
- First-And-Third-Party-Script-Info.js - Separate first vs third-party impact
- First-And-Third-Party-Script-Timings.js - Diagnose slow script connections
- JS-Execution-Time-Breakdown.js - Network vs parse/execution time
- Inline-Script-Info-and-Size.js - Measure inline script overhead
- Validate-Preload-Async-Defer-Scripts.js - Find preload anti-patterns
Resource Hints & Priority Optimization
When the user wants to optimize resource loading priorities:
- 1. Resource-Hints.js - Overview of all hints in use
- Resource-Hints-Validation.js - Verify hints are actually used
- Priority-Hints-Audit.js - Check fetchpriority usage
- Prefetch-Resource-Validation.js - Validate prefetch strategy
- Validate-Preload-Async-Defer-Scripts.js - Find conflicts
CSS Optimization Workflow
When CSS is bloated or blocking rendering:
- 1. Critical-CSS-Detection.js - Check critical CSS strategy
- Inline-CSS-Info-and-Size.js - Measure inline CSS overhead
- CSS-Media-Queries-Analysis.js - Find unused responsive CSS
- Find-render-blocking-resources.js - Identify blocking stylesheets
Image Loading Audit
When images are suspected to cause loading issues:
- 1. Find-Above-The-Fold-Lazy-Loaded-Images.js - Check for lazy-loading anti-patterns
- Find-non-Lazy-Loaded-Images-outside-of-the-viewport.js - Find missed optimization opportunities
- Find-Images-With-Lazy-and-Fetchpriority.js - Detect contradictory attributes
- Priority-Hints-Audit.js - Verify LCP image has fetchpriority="high"
SSR/Framework Performance
When analyzing Next.js, Nuxt, Remix, or other SSR frameworks:
- 1. SSR-Hydration-Data-Analysis.js - Analyze hydration data size
- Script-Loading.js - Check framework script loading patterns
- JS-Execution-Time-Breakdown.js - Measure hydration execution cost
- Content-Visibility.js - Check if content-visibility is used for optimization
Decision Tree
Use this decision tree to automatically run follow-up snippets based on results:
After TTFB.js
- - If TTFB > 600ms → Run TTFB-Sub-Parts.js to diagnose where time is spent
- If Service Worker detected → Run Service-Worker-Analysis.js to check for SW overhead
- If TTFB varies significantly across resources → Run TTFB-Resources.js
After FCP.js
1.
Find-render-blocking-resources.js (CSS/JS blocking)
2.
Critical-CSS-Detection.js (CSS strategy)
3.
Script-Loading.js (blocking scripts)
- - If FCP is good but user complains about perceived slowness → Check LCP with webperf-core-web-vitals skill
After Find-render-blocking-resources.js
- - If blocking stylesheets found → Run Critical-CSS-Detection.js
- If blocking scripts found → Run:
1.
Script-Loading.js (loading strategy)
2.
Validate-Preload-Async-Defer-Scripts.js (check for anti-patterns)
- - If fonts blocking → Run Fonts-Preloaded-Loaded-and-used-above-the-fold.js
After Script-Loading.js
- - If many blocking/parser-blocking scripts → Run:
1.
JS-Execution-Time-Breakdown.js (measure execution cost)
2.
First-And-Third-Party-Script-Info.js (identify third-party culprits)
- - If third-party scripts detected → Run First-And-Third-Party-Script-Timings.js
- If large inline scripts → Run Inline-Script-Info-and-Size.js
After Resource-Hints-Validation.js
- - If unused preloads found → Recommend removing them
- If missing preloads for critical resources → Run:
1.
Fonts-Preloaded-Loaded-and-used-above-the-fold.js (fonts)
2.
Priority-Hints-Audit.js (LCP candidate)
- - If preloads on async/defer scripts → Run Validate-Preload-Async-Defer-Scripts.js
After Service-Worker-Analysis.js
- - If SW overhead > 100ms → Recommend Navigation Preload API
- If SW caching many resources → Run TTFB-Resources.js to verify cache hits
- If SW not detected but site is SPA/PWA → Recommend implementing SW
After Fonts-Preloaded-Loaded-and-used-above-the-fold.js
- - If fonts preloaded but not used above-the-fold → Recommend removing preloads
- If fonts used but not preloaded → Recommend adding preload
- If many font variants loaded → Suggest subsetting or reducing variants
After First-And-Third-Party-Script-Info.js
- - If many third-party scripts (>5) → Run:
1.
First-And-Third-Party-Script-Timings.js (detailed timing)
2.
JS-Execution-Time-Breakdown.js (execution impact)
- - If third-party scripts are slow → Recommend async/defer or removal
After SSR-Hydration-Data-Analysis.js
- - If hydration data > 100KB → Recommend optimization strategies
- If multiple hydration scripts → Investigate framework configuration
- If large inline hydration data → Consider streaming or chunking
After Priority-Hints-Audit.js
- - If LCP candidate lacks fetchpriority="high" → Recommend adding it
- If conflicting priorities (preload + low) → Recommend resolving conflict
- If fetchpriority on non-critical resources → Review priority strategy
After Prefetch-Resource-Validation.js
- - If >10 prefetch hints → Recommend reducing to critical resources
- If individual prefetch > 500KB → Question necessity
- If total prefetch > 2MB → Flag as mobile bandwidth concern
After Critical-CSS-Detection.js
- - If render-blocking CSS > 14KB → Recommend inlining critical CSS
- If no inline CSS but has blocking stylesheets → Suggest critical CSS extraction
- If CSS > 50KB total → Run CSS-Media-Queries-Analysis.js to find savings
After Back-Forward-Cache.js
- - If bfcache blocked → Provide specific remediation based on blocking reasons
- If bfcache eligible → Confirm optimization is working
After Client-Side-Redirect-Detection.js
- - If client-side redirects detected → Recommend server-side redirects
- If redirect chain found → Suggest eliminating intermediate hops
References
- -
references/snippets.md — Descriptions and thresholds for each script - INLINECODE32 — Return value schema for interpreting script output
Execute via mcp__chrome-devtools__evaluate_script → read with mcp__chrome-devtools__get_console_message.
WebPerf: 加载性能
用于在 Chrome DevTools 中测量 Web 性能的 JavaScript 代码片段。通过 mcpchrome-devtoolsevaluatescript 执行,使用 mcpchrome-devtoolsgetconsole_message 捕获输出。
脚本
- - scripts/Back-Forward-Cache.js — 前进/后退缓存(bfcache)
- scripts/CSS-Media-Queries-Analysis.js — CSS 媒体查询分析
- scripts/Client-Side-Redirect-Detection.js — 客户端重定向检测
- scripts/Content-Visibility.js — 内容可见性
- scripts/Critical-CSS-Detection.js — 关键 CSS 检测
- scripts/Event-Processing-Time.js — 事件处理时间
- scripts/FCP.js — 首次内容绘制(FCP)
- scripts/Find-Above-The-Fold-Lazy-Loaded-Images.js — 查找首屏懒加载图片
- scripts/Find-Images-With-Lazy-and-Fetchpriority.js — 查找同时使用懒加载和 fetchpriority 的图片
- scripts/Find-non-Lazy-Loaded-Images-outside-of-the-viewport.js — 查找视口外未懒加载的图片
- scripts/Find-render-blocking-resources.js — 查找阻塞渲染的资源
- scripts/First-And-Third-Party-Script-Info.js — 第一方和第三方脚本信息
- scripts/First-And-Third-Party-Script-Timings.js — 第一方和第三方脚本时序
- scripts/Fonts-Preloaded-Loaded-and-used-above-the-fold.js — 首屏预加载、已加载和使用的字体
- scripts/Inline-CSS-Info-and-Size.js — 内联 CSS 信息与大小
- scripts/Inline-Script-Info-and-Size.js — 内联脚本信息与大小
- scripts/JS-Execution-Time-Breakdown.js — JavaScript 执行时间分解
- scripts/Prefetch-Resource-Validation.js — 预取资源验证
- scripts/Priority-Hints-Audit.js — 优先级提示审计
- scripts/Resource-Hints-Validation.js — 资源提示验证
- scripts/Resource-Hints.js — 资源提示
- scripts/SSR-Hydration-Data-Analysis.js — SSR 框架水合数据分析
- scripts/Script-Loading.js — 脚本加载
- scripts/Service-Worker-Analysis.js — Service Worker 分析
- scripts/TTFB-Resources.js — 首字节时间:测量所有资源的 TTFB
- scripts/TTFB-Sub-Parts.js — 首字节时间:测量 TTFB 子部分
- scripts/TTFB.js — 首字节时间:测量首字节时间
- scripts/Validate-Preload-Async-Defer-Scripts.js — 验证异步/延迟脚本的预加载
描述和阈值:references/snippets.md
常见工作流程
完整加载性能审计
当用户要求进行全面的加载分析或审计加载性能时:
- 1. TTFB.js - 建立服务器/网络性能基线
- FCP.js - 检查初始渲染时间
- Find-render-blocking-resources.js - 识别阻塞渲染的内容
- Critical-CSS-Detection.js - 验证 CSS 策略
- Script-Loading.js - 审计脚本加载模式
- Resource-Hints-Validation.js - 检查优化提示
服务器/后端性能调查
当 TTFB 较慢或用户询问为什么我的服务器慢时:
- 1. TTFB.js - 测量整体 TTFB
- TTFB-Sub-Parts.js - 分解为 DNS、连接、服务器时间
- Service-Worker-Analysis.js - 检查影响 TTFB 的 SW 开销
- TTFB-Resources.js - 识别缓慢的第三方或 API 端点
字体加载优化
当用户询问字体、FOIT、FOUT 或字体性能时:
- 1. Fonts-Preloaded-Loaded-and-used-above-the-fold.js - 完整字体审计
- Resource-Hints-Validation.js - 验证字体预加载是否正确
- Find-render-blocking-resources.js - 检查字体是否阻塞渲染
脚本性能深入分析
当怀疑脚本拖慢页面时:
- 1. Script-Loading.js - 识别阻塞脚本和加载策略
- First-And-Third-Party-Script-Info.js - 区分第一方与第三方影响
- First-And-Third-Party-Script-Timings.js - 诊断缓慢的脚本连接
- JS-Execution-Time-Breakdown.js - 网络与解析/执行时间
- Inline-Script-Info-and-Size.js - 测量内联脚本开销
- Validate-Preload-Async-Defer-Scripts.js - 查找预加载反模式
资源提示与优先级优化
当用户想要优化资源加载优先级时:
- 1. Resource-Hints.js - 所有使用中提示的概览
- Resource-Hints-Validation.js - 验证提示是否实际被使用
- Priority-Hints-Audit.js - 检查 fetchpriority 使用情况
- Prefetch-Resource-Validation.js - 验证预取策略
- Validate-Preload-Async-Defer-Scripts.js - 查找冲突
CSS 优化工作流程
当 CSS 臃肿或阻塞渲染时:
- 1. Critical-CSS-Detection.js - 检查关键 CSS 策略
- Inline-CSS-Info-and-Size.js - 测量内联 CSS 开销
- CSS-Media-Queries-Analysis.js - 查找未使用的响应式 CSS
- Find-render-blocking-resources.js - 识别阻塞样式表
图片加载审计
当怀疑图片导致加载问题时:
- 1. Find-Above-The-Fold-Lazy-Loaded-Images.js - 检查懒加载反模式
- Find-non-Lazy-Loaded-Images-outside-of-the-viewport.js - 查找遗漏的优化机会
- Find-Images-With-Lazy-and-Fetchpriority.js - 检测冲突属性
- Priority-Hints-Audit.js - 验证 LCP 图片具有 fetchpriority=high
SSR/框架性能
当分析 Next.js、Nuxt、Remix 或其他 SSR 框架时:
- 1. SSR-Hydration-Data-Analysis.js - 分析水合数据大小
- Script-Loading.js - 检查框架脚本加载模式
- JS-Execution-Time-Breakdown.js - 测量水合执行成本
- Content-Visibility.js - 检查是否使用 content-visibility 进行优化
决策树
使用此决策树根据结果自动运行后续代码片段:
执行 TTFB.js 后
- - 如果 TTFB > 600ms → 运行 TTFB-Sub-Parts.js 诊断时间花费在哪里
- 如果检测到 Service Worker → 运行 Service-Worker-Analysis.js 检查 SW 开销
- 如果 TTFB 在不同资源间差异显著 → 运行 TTFB-Resources.js
执行 FCP.js 后
1.
Find-render-blocking-resources.js(CSS/JS 阻塞)
2.
Critical-CSS-Detection.js(CSS 策略)
3.
Script-Loading.js(阻塞脚本)
- - 如果 FCP 良好但用户抱怨感知缓慢 → 使用 webperf-core-web-vitals 技能检查 LCP
执行 Find-render-blocking-resources.js 后
- - 如果发现阻塞样式表 → 运行 Critical-CSS-Detection.js
- 如果发现阻塞脚本 → 运行:
1.
Script-Loading.js(加载策略)
2.
Validate-Preload-Async-Defer-Scripts.js(检查反模式)
- - 如果字体阻塞 → 运行 Fonts-Preloaded-Loaded-and-used-above-the-fold.js
执行 Script-Loading.js 后
1.
JS-Execution-Time-Breakdown.js(测量执行成本)
2.
First-And-Third-Party-Script-Info.js(识别第三方罪魁祸首)
- - 如果检测到第三方脚本 → 运行 First-And-Third-Party-Script-Timings