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>
- WP根目录
- 性能症状和范围:
- 哪个URL/REST路由/管理后台页面
- 何时发生(持续还是偶发;登录用户还是未登录用户)
操作步骤
0) 安全措施:先测量,避免危险操作
- 确认是否可以执行写入操作(插件安装、配置更改、缓存刷新)。
- 选择一个可复现的目标(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) 深入分析(无需浏览器)
推荐顺序:
wp profile stage查看时间消耗在哪个阶段(bootstrap/main_query/template)。wp profile hook(可选添加--url=)查找慢的钩子/回调。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不匹配),缓存掩盖了结果,或操作码缓存过期
- 你测量了不同的URL/站点(
- 分析数据噪声大:
- 消除后台任务,使用预热缓存测试,运行多个样本
SAVEQUERIES/Query Monitor导致开销:- 除非明确批准,否则不要在生产环境运行
升级处理
- 如果是生产环境且没有明确批准,不要:
- 安装插件、启用
SAVEQUERIES、运行负载测试或在流量高峰期刷新缓存
- 安装插件、启用
- 如果需要系统级分析(APM、PHP分析器扩展),请与运维/托管协调。






