分类: WordPress
-
在解决 WordPress 首页性能问题后,对当前服务器进行了完整配置审计,重点检查 Nginx、PHP-FPM、OPcache、Redis、W3 Total Cache、阿里云 RDS/MySQL 以及 WordPress 应用层。最终将 PHP-FPM 最大工作进程从 10 提高到 14,调整 OPcache 内存与 Interned Strings 配置,关闭 Gutenberg 实时协作,并为 SlyTranslate 调试日志增加日志轮转;同时保留大量已经运行健康的参数不变,形成一套更适合当前网站长期运行的服务器配置基线。
-
本文记录一次 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 生产环境升级到 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 日志。
-
本文记录了使用 Better Search Replace 插件清理 WordPress 文章链接中 ?utm_source=chatgpt.com 跟踪参数的过程。最初因同时选择过多数据库表而出现请求处理错误,后来改为只选择保存文章内容的 wp_posts 表,并通过预演模式成功完成检查。最终未发现完全匹配的内容,因此没有执行正式替换。文章同时总结了数据库批量替换时的表选择、预演、备份及不同 UTM 参数形式等注意事项。
-
在将 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,让该低优先级问题自然恢复。
-
将 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 中英文归档页增加 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 日的问题。
-
记录一次 SlyTranslate + GLM-5.2 整篇翻译中的 Protected Token 校验失败排查过程。问题最初表现为文章尾部连续丢失 Gutenberg STRUCT Token,在增加 Tail STRUCT Repair、强化 Prompt 和 Tail Guard 后仍未解决。进一步分析发现,真正原因是中文文章中存在 Paragraph → Plaintext → Paragraph 的跨块自然语言结构,GLM 为生成更自然的英文主动重组内容,导致 Protected Token 顺序漂移。最终通过清理不必要的 Plaintext、让 Gutenberg 区块边界与自然语言语义边界保持一致,在不放宽严格 Token 验证的情况下成功完成 GLM-5.2 整篇翻译。
-
在完成 Gutenberg + SyntaxHighlighter 历史文章迁移后,我继续处理 Mixed Gutenberg / Classic + SyntaxHighlighter 文章,并整理出每天固定处理 20 篇的完整 SOP。流程包括 Classic 内容规范化为 Gutenberg、SyntaxHighlighter 转 Code Block Pro、代码语言核对、生产只读验证、中文摘要生成和英文覆盖翻译。经过连续两批共 40 篇真实文章验证,流程同时覆盖了 SSH 超时有限重试、翻译失败单篇 resume,以及 selected_count=0 但批次仍未完成等异常情况,最终形成一套可以长期重复执行的历史文章迁移方案。
-
在再次出现 CPU 告警后,我暂时停止继续追查瞬时负载根因,转而重新启用 W3 Total Cache 页面预缓存,并从 900 秒 × 5 页 的保守配置逐步优化。通过准确统计中英文 Yoast Sitemap,确认真正需要预缓存的页面为 6270 个,并自动生成 www + en 联合 W3TC 专用 Sitemap,每小时同步更新。最终将 W3TC Page Cache、EdgeOne 中文站和 Cloudflare 英文站的缓存生命周期统一调整为 96 小时,同时采用 300 秒 × 7 页 的低批量持续预热策略,在降低冷缓存回源和 PHP 动态生成压力的同时,避免预缓存本身制造新的 CPU 峰值。
