wp-performance

wp-performance

热门

用于调查或改进WordPress性能(仅后端代理):性能分析和测量(WP-CLI profile/doctor、Server-Timing、通过REST头部的Query Monitor)、数据库/查询优化、自动加载选项、对象缓存、cron、HTTP API调用以及安全验证。

1913Star
286Fork
更新于 2026/7/23
SKILL.md
readonly只读
name
wp-performance
description

用于调查或改进WordPress性能(仅后端代理):性能分析和测量(WP-CLI profile/doctor、Server-Timing、通过REST头部的Query Monitor)、数据库/查询优化、自动加载选项、对象缓存、cron、HTTP API调用以及安全验证。

WP Performance(仅后端)

何时使用

在以下情况下使用此技能:

  • WordPress站点/页面/端点响应慢(前端TTFB、管理后台、REST、WP-Cron)
  • 需要性能分析计划及工具推荐(WP-CLI profile/doctor、Query Monitor、Xdebug/XHProf、APM)
  • 正在优化数据库查询、自动加载选项、对象缓存、cron任务或远程HTTP调用

此技能假设代理无法使用浏览器UI。优先使用WP-CLI、日志和HTTP请求。

所需输入

  • 环境和安全性:开发/预发布/生产环境,任何限制(禁止写入、禁止安装插件)。
  • 如何定位安装:
    • WP根目录 --path=<path>
    • (多站点/站点定位)--url=<url>
  • 性能症状和范围:
    • 哪个URL/REST路由/管理后台页面
    • 何时发生(持续还是偶发;登录用户还是未登录用户)

操作步骤

0) 安全措施:先测量,避免危险操作

  1. 确认是否可以执行写入操作(插件安装、配置更改、缓存刷新)。
  2. 选择一个可复现的目标(URL或REST路由)并获取基线:
    • 如果可能,使用curl获取TTFB/时间
    • 如果可用,使用WP-CLI性能分析

阅读:

  • references/measurement.md

1) 生成仅后端性能报告(确定性)

运行:

  • node skills/wp-performance/scripts/perf_inspect.mjs --path=<path> [--url=<url>]

这将检测:

  • WP-CLI可用性和核心版本
  • wp doctor / wp profile是否可用
  • 自动加载选项大小(如果可能)
  • 对象缓存drop-in是否存在

2) 快速见效:在深入分析前运行诊断

如果有WP-CLI访问权限,优先使用:

  • wp doctor check

它能捕获常见的生产环境陷阱(自动加载膨胀、SAVEQUERIES/WP_DEBUG、插件数量、更新)。

阅读:

  • references/wp-cli-doctor.md

3) 深入分析(无需浏览器)

推荐顺序:

  1. wp profile stage查看时间消耗在哪个阶段(bootstrap/main_query/template)。
  2. wp profile hook(可选添加--url=)查找慢的钩子/回调。
  3. wp profile eval针对特定代码路径。

阅读:

  • references/wp-cli-profile.md

4) Query Monitor(仅后端使用)

Query Monitor通常通过UI驱动,但可以通过REST API响应头部和_envelope响应无头使用:

  • 认证(nonce或应用程序密码)。
  • 请求REST响应并检查头部(x-qm-*)和/或使用?_envelope时的qm属性。

阅读:

  • references/query-monitor-headless.md

5) 按类别修复(选择主要瓶颈)

使用性能分析输出选择一个主要瓶颈类别:

  • 数据库查询 → 减少查询次数,修复N+1模式,改进索引,避免昂贵的元查询。
    • references/database.md
  • 自动加载选项 → 识别最大的自动加载选项,停止自动加载大型数据块。
    • references/autoload-options.md
  • 对象缓存未命中 → 引入缓存或修复缓存键/组使用;在适当位置添加持久对象缓存。
    • references/object-cache.md
  • 远程HTTP调用 → 添加超时、缓存、批处理;避免在每个请求中调用远程API。
    • references/http-api.md
  • Cron → 减少到期任务峰值,去重事件,将繁重任务移出请求路径。
    • references/cron.md

6) 验证(重复相同测量)

  • 重新运行相同的wp profile / wp doctor / REST请求。
  • 确认性能差异且行为未改变。
  • 如果修复有风险,尽可能在功能标志或分阶段部署后发布。

WordPress 6.9性能改进

分析时注意这些6.9的变化:

经典主题按需加载CSS:

  • 经典主题现在支持按需加载CSS(以前只有块主题有此功能)。
  • 仅加载页面实际使用的块样式,减少CSS负载30-65%。
  • 如果你正在分析经典主题,这应该已经有所帮助。

无渲染阻塞资源的块主题:

  • 未定义自定义样式表的块主题(如Twenty Twenty-Three/Four)现在可以零渲染阻塞CSS加载。
  • 样式来自全局样式(theme.json)和单独的块样式,全部内联。
  • 这显著改善了LCP(最大内容绘制)。

内联CSS限制提高:

  • 内联小样式表的阈值已提高,减少了渲染阻塞资源。

参考:https://make.wordpress.org/core/2025/11/18/wordpress-6-9-frontend-performance-field-guide/

验证

  • 捕获基线 vs 修复后的数据(相同环境、相同URL/路由)。
  • 适用时,wp doctor check结果干净(或改善)。
  • 日志中没有新的PHP错误或警告。
  • 不需要为正确性刷新缓存(缓存刷新应是最后手段)。

失败模式/调试

  • 代码更改后“无变化”:
    • 你测量了不同的URL/站点(--url不匹配),缓存掩盖了结果,或操作码缓存过期
  • 分析数据噪声大:
    • 消除后台任务,使用预热缓存测试,运行多个样本
  • SAVEQUERIES/Query Monitor导致开销:
    • 除非明确批准,否则不要在生产环境运行

升级处理

  • 如果是生产环境且没有明确批准,不要:
    • 安装插件、启用SAVEQUERIES、运行负载测试或在流量高峰期刷新缓存
  • 如果需要系统级分析(APM、PHP分析器扩展),请与运维/托管协调。