系列: WordPress 性能优化手记
-
在为 WordPress 中英文归档页增加 Adsterra Native Banner 时,前台始终无法及时显示最新模板内容。经过对 WPCode、PHP Snippet、Shortcode、Language Visibility、Block Template、CDN、W3 Total Cache Page Cache 与 Redis Object Cache 的逐层排查,最终确认 www 与 en 不同 Host 下的 W3TC Object Cache 保留了旧版 wp_template。分别清理两个域名上下文的 Object Cache,并重新生成对应 Page Cache 后,中英文广告均恢复正常。此次问题也暴露出现有多域名缓存同步机制对 wp_template 等结构性内容覆盖不足,下一步将重点完善已有 MU 插件,并继续处理首页最新文章仍停留在 7 月 28 日的问题。
-
将 WordPress 英文站从 /en/ 迁移到独立子域名后,我排查了 Polylang 多域名、独立后台 Host、W3 Total Cache Page Cache 与 Redis Object Cache 之间的缓存失效问题。最终确认并修复了英文文章更新后语言首页 Page Cache 未完整失效,以及 posts 对象缓存跨 Host 失效的问题,并将方案整理为 MIT 许可的独立 MU Plugin。真实后台 Update 验证后,Origin 层已能够正确返回最新内容,剩余问题进一步定位到 EdgeOne、Cloudflare 等 CDN 层。
-
在将 WordPress 英文站从 /en/ 迁移到独立子域名后,我发现部分新发布的英文译文虽然已经与中文文章建立 Polylang 关联,但中文详情页仍然缺少语言切换器和 hreflang。排查确认,问题来自 W3 Total Cache Redis Object Cache 在多 Host 环境下缓存了旧的 post_translations_relationships 数据,随后 Page Cache 又继续保存错误 HTML。本文记录了 WP-CLI、真实 HTTP Runtime、精确 Object Cache 删除和 Page Cache 验证过程,并说明为什么最终暂时不引入复杂的跨 Host Redis 清理逻辑,而选择保持现有 TTL,让该低优先级问题自然恢复。
-
阿里云 ECS 再次频繁触发 CPU 告警后,我结合云监控与 EdgeOne 离线日志,确认自动化抓取和大量回源 MISS 是主要诱因,而 W3TC 未预缓存归档分页只是放大因素。考虑到服务器长期运行在 1 核 2G、内存占用接近 60%,且后续还要部署 Go Tour,最终将实例升级为 2 核 4G。本文记录了告警分析、规格选择、快照备份、升配重启,以及 Nginx、PHP-FPM、Redis、W3TC 和三个域名的完整验证过程。
-
本文记录在 OneinStack 生产环境中将 PHP 从 8.1.19 升级到 8.5.9 的完整过程。升级期间,PHP 主体、PHP-FPM、Redis 和 LDAP 扩展均安装成功,但 Imagick 3.8.0 因 PHP 8.5 头文件兼容问题编译失败,最终改用 Imagick 3.8.1,并明确指定现有 ImageMagick 7.1.1-10 的安装路径完成编译。随后继续验证 WordPress、WP-CLI、REST API、Polylang 多域名输出,以及 W3 Total Cache Redis Object Cache 的跨请求持久化和中英文域名 Host 隔离,确认中文站、英文站和后台域名均正常运行。
-
本文记录在 Alibaba Cloud Linux 3 与 OneinStack 环境中,将 Nginx 从 1.24.0 升级到 1.30.4,并将其静态编译使用的 OpenSSL 从 1.1.1t 升级到 3.5.7 的完整过程。操作采用旁路编译、生产配置预检、完整备份、短暂停机切换和自动回滚方案,期间解决了 GitHub 下载失败、Perl 模块缺失、Python 3.6 语法不兼容以及旧版 HTTP/2 配置警告等问题。升级后,中文站、英文站、管理子域、WordPress REST API、PHP-FPM 和源站 HTTP/2 均通过验证。
-
本文记录在阿里云 ECS 的 OneinStack 环境中,将源码安装的 Redis 7.0.11 升级到 Redis 8.10.0 的完整过程。内容包括升级前环境审计、vm.overcommit_memory 与 Transparent Huge Pages 优化、手动生成 RDB、双重备份与自动回滚、RedisBloom 等附加模块编译失败分析、Redis 核心二进制单独构建、旧版 RDB 兼容检查、临时端口与 PHP Redis 读写测试,以及生产切换后的 WordPress、W3 Total Cache、内存和缓存状态验证。
-
将 WordPress 生产环境升级到 PHP 8.5 后,PHP-FPM 日志中出现了多项插件兼容性警告。本文记录对 TMS Extensions for Polylang、Nimble Page Builder、SyntaxHighlighter、Yoast SEO 和 PublishPress Series 的逐项排查:停用已经失去实际用途的 Nimble Page Builder,为 SyntaxHighlighter 实施三处最小兼容性补丁,对无法稳定复现的 Yoast SEO 问题暂不修改,并将 PublishPress Series 的问题提交给上游。整个过程以正常生产环境是否受影响为判断依据,而不是盲目追求清除所有 Deprecated 和 Notice 日志。
-
本文记录一次 WordPress 动态首页性能问题的完整排查与优化过程。绕过 EdgeOne、Cloudflare 和 W3 Total Cache 后,发现中文首页真实动态生成时间接近 19 秒。通过 PHP-FPM slowlog、MySQL EXPLAIN 与实际 SQL 基准测试,最终定位到 Post Views Counter 的热门文章排行榜查询:完整 wp_posts.* 参与 SUM、GROUP BY 和 ORDER BY,导致 MySQL 5.7 创建磁盘临时表。通过 MU Plugin 将查询改造成“轻量排名 + Top N 完整文章加载”的两阶段结构后,中文动态首页降至约 0.83~0.89 秒,英文首页稳定在约 0.87~0.96 秒,同时保持排行榜顺序、浏览量和 Polylang 语言过滤正确。
-
在解决 WordPress 首页性能问题后,对当前服务器进行了完整配置审计,重点检查 Nginx、PHP-FPM、OPcache、Redis、W3 Total Cache、阿里云 RDS/MySQL 以及 WordPress 应用层。最终将 PHP-FPM 最大工作进程从 10 提高到 14,调整 OPcache 内存与 Interned Strings 配置,关闭 Gutenberg 实时协作,并为 SlyTranslate 调试日志增加日志轮转;同时保留大量已经运行健康的参数不变,形成一套更适合当前网站长期运行的服务器配置基线。
