名称: wp-performance 描述: “当调查或改进WordPress性能时使用(仅限后端代理):性能分析和测量(通过WP-CLI profile/doctor、Server-Timing、通过REST头部的Query Monitor)、数据库/查询优化、自动加载选项、对象缓存、定时任务、HTTP API调用和安全验证。” 兼容性: “针对WordPress 6.9+(PHP 7.2.24+)。仅限后端代理;在可用时优先使用WP-CLI(doctor/profile)。”
WordPress性能优化(仅限后端)
何时使用
在以下情况使用此技能:
- WordPress网站/页面/端点加载缓慢(前端TTFB、管理后台、REST API、WP-Cron)
- 您需要一个性能分析计划和工具推荐(WP-CLI profile/doctor、Query Monitor、Xdebug/XHProf、APM工具)
- 您正在优化数据库查询、自动加载选项、对象缓存、定时任务或远程HTTP调用
此技能假设代理无法使用浏览器界面。优先使用WP-CLI、日志和HTTP请求。
所需输入
- 环境和安全:开发/预发布/生产环境,任何限制(禁止写入、禁止安装插件)。
- 如何定位安装:
- WordPress根目录
--path=<路径> - (多站点/站点定位)
--url=<URL>
- WordPress根目录
- 性能症状和范围:
- 哪个URL/REST路由/管理界面
- 何时发生(持续 vs 偶发;登录 vs 未登录)
操作流程
0) 安全护栏:先测量,避免风险操作
- 确认是否可以执行写入操作(安装插件、配置更改、缓存刷新)。
- 选择一个可复现的目标(URL或REST路由)并捕获基线:
- 如果可能,使用
curl测量TTFB/时间 - 如果可用,使用WP-CLI进行性能分析
- 如果可能,使用
阅读:
references/measurement.md
1) 生成仅限后端的性能报告(确定性)
运行:
node skills/wp-performance/scripts/perf_inspect.mjs --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查看时间消耗在何处(引导/主查询/模板)。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
- 定时任务 → 减少即时任务峰值,去重事件,将繁重任务移出请求路径。
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性能分析器扩展),请与运维/托管团队协调。