没有不值得去解决的问题,也没有不值得去学习的技术!

标签: CDN 缓存

  • 在完成 A Tour of Go 简体中文 103 个正式课程页面的 ChatGPT 全量重译、语义审核和 canonical promotion 之后,本轮继续完成最终生产上线验收。当前生产环境已经切换到正式 release 20260818-zh-CN-45f4cad,103 个正式课程路由全部返回 HTTP 200,7 个 article endpoint 的 production origin 与 EdgeOne 公网响应达到 7/7 exact match,同时新的 ChatGPT 译文标记存在、旧版译文标记已经消失。真实 Run 与 Format 请求也均返回 HTTP 200,并得到预期执行和格式化结果;/socket 等不应公开的路径继续保持 404。结合 EdgeOne 的 HIT 与 Age 结果,本次发布在没有执行全站缓存刷新的情况下仍然确认公网已完整返回新 release,因此后续更适合采用“先验收、发现 stale URL 后再 targeted purge”的缓存处理方式。至此,103 页 ChatGPT 重译从翻译、审核、正式提升到生产上线和公网验收的完整链路正式闭合。

  • 此前在测试 WordPress 的 EdgeOne 与 Cloudflare Query String 缓存归一化时,由于没有找到真实存在的日期归档分页,/YYYY/MM/DD/page/N/ 场景一直没有完成验证。随着 2026 年 8 月 15 日日期归档出现第 3 页,这次重新补测中文站与英文站。EdgeOne 中随机 Query String 直接命中已有缓存且正文完全一致;Cloudflare 中虽然原始 HTML SHA-256 每次不同,但最终确认差异仅来自 /cdn-cgi/l/email-protection 邮箱地址混淆。归一化该动态字段后,Clean 与 Dirty 四份 HTML 完全一致,最终确认两个 CDN 的日期归档分页 Query String 归一化均工作正常。

  • A Tour of Go 新的 ZgoCloud Playground 执行节点搭建完成后,本文继续记录生产端 Run / Format 的实际切换过程:从代码审计、统一 Playground 基础地址、生产与本地运行模式隔离,到 release manifest、自动部署脚本和生产发布同步更新。上线后还遇到了 EdgeOne 缓存旧 /tour/script.js,导致浏览器继续请求旧 /_/compile 的问题;定向清除缓存后,Run 与 Format 最终成功切换到 ZgoCloud,并通过桌面浏览器和手机真实网络环境验收。

  • 本文记录 A Tour of Go 多语言翻译项目一次手机端首页顶栏标题换行问题的完整处理过程。从真实手机发现“A Tour of Go 多语言翻译项目”最后一个字符被挤到第二行,到定位移动端 CSS、调整 Logo 间距与标题字号、在 360px 宽度下验证,再到评估 320px 极窄屏边界、发布生产、处理 EdgeOne 缓存并完成真机最终验收。整个过程也进一步明确了项目在响应式设计中的原则:优先解决真实设备上的实际问题,不过度针对极端宽度堆叠特殊规则,并为未来多语言扩展保留足够简单、可维护的实现。

  • 为 A Tour of Go 简体中文生产站接入 Google Analytics 4 与百度统计。本文记录从审计现有 TOUR_ANALYTICS 注入机制、补齐首页统计入口,到使用 systemd EnvironmentFile 管理生产统计代码、重新生成并发布 production release,以及处理 EdgeOne 旧 HTML 缓存的完整过程。最终通过源站、公网页面和浏览器网络请求三层验证,确认 GA4 g/collect 返回 HTTP 204、百度统计 hm.gif 返回 HTTP 200,两套统计系统均已完成真实数据上报。

  • 本文记录一次 WordPress 中文站 EdgeOne 524 故障的排查与优化过程。故障期间,大量带有 amp、nonamp、query-62-page 等查询参数的文章和列表页出现缓存 MISS,导致 1 核 ECS 上的 PHP-FPM 进程被占满。为减少缓存碎片和重复回源,本文将原有文章详情页的 Query String 归一化方案扩展至首页、分类、标签、系列和日期归档等公开列表页,并分别在 EdgeOne 与 Cloudflare 中配置缓存 Key 忽略、回源去参和 URL 重写。同时保留 WordPress 搜索参数 s,通过 MISS → HIT、缓存 Age 及 Nginx 源站日志验证规则已经生效。

  • 在将 W3 Total Cache、EdgeOne 与 Cloudflare 的主要 HTML 缓存统一延长到 4 天后,我发现新文章发布后,首页和 Sitemap 可能继续命中 CDN 中的旧缓存。本文记录如何在保留普通页面 4 天长缓存的同时,仅将中英文首页和公开 Yoast Sitemap 的 Edge TTL 缩短到 2 小时,并分别通过 EdgeOne 与 Cloudflare 实测缓存过期、重新回源和 HIT 行为。最终在内容新鲜度、缓存命中率和维护成本之间取得更合适的平衡。

  • 在再次出现 CPU 告警后,我暂时停止继续追查瞬时负载根因,转而重新启用 W3 Total Cache 页面预缓存,并从 900 秒 × 5 页 的保守配置逐步优化。通过准确统计中英文 Yoast Sitemap,确认真正需要预缓存的页面为 6270 个,并自动生成 www + en 联合 W3TC 专用 Sitemap,每小时同步更新。最终将 W3TC Page Cache、EdgeOne 中文站和 Cloudflare 英文站的缓存生命周期统一调整为 96 小时,同时采用 300 秒 × 7 页 的低批量持续预热策略,在降低冷缓存回源和 PHP 动态生成压力的同时,避免预缓存本身制造新的 CPU 峰值。

  • 本文记录一次 WordPress 双 CDN 架构下的 Query String 缓存优化实战。中文站通过 EdgeOne 自定义 Cache Key 与回源请求参数设置,让 canonical 文章 URL 的不同查询参数共用缓存,并在 MISS 回源时删除 Query String;英文站则通过 Cloudflare URL Rewrite Rule 实现相同目标。整个过程结合 HIT/MISS、Age、301、CF-Ray 与 Nginx access log 进行实际验证,最终将规则收敛为仅优化 /YYYY/MM/DD/ID/ 形式的标准文章 URL,在降低随机参数缓存穿透风险的同时保持 CDN 配置简单、清晰、易维护。

  • 在通过 EdgeOne 屏蔽异常 Sogou UA 流量、解决 WordPress 502 后,阿里云 ECS 仍然偶发 CPU 95%~100% 告警。进一步结合 PHP-FPM Slow Log、Nginx 请求日志和 W3 Total Cache 实测发现,大量带 Query String 的前台请求会导致 W3TC Disk: Enhanced 页面缓存无法复用,使请求重新进入 PHP-FPM,完整执行 Gutenberg、Polylang、Post Views Counter、Redis Object Cache 和数据库查询。正常 URL 第二次请求 TTFB 仅约 0.1 秒,而带参数 URL 每次仍需约 7~11 秒。最终决定不逐个封禁参数,也暂不升级服务器或修改 W3TC 内部逻辑,而是在 EdgeOne 与 Cloudflare CDN 层进行 Query String 缓存键和回源 URL 规范化,从根源减少动态参数造成的缓存穿透。

👨‍💻 个人品牌

王世强|PHP / Go 技术顾问

15+ 年 Web 后端开发经验,专注于系统维护、架构优化、性能调优及 Linux 运维。

持续运营技术博客 10+ 年,累计发布 1000+ 篇原创技术文章。

为创业团队、中小企业及独立开发者提供长期技术支持与远程合作服务。

👉 关于我 & 合作

.env (14) 404 (13) add (16) AI 翻译 (28) Apache (13) Array (19) A Tour of Go (44) Cache (13) CentOS (23) ChatGPT (15) ChatGPT Plus (14) chrome (19) Cloudflare (28) Codex (14) composer (42) composer.json (22) composer install (13) composer update (14) console (16) Container (25) curl (15) delete (31) Docker (32) Dockerfile (15) EdgeOne (31) environment variable (19) error (24) file (15) filter (20) Git (27) GitHub (21) Gitlab (15) GLM-5.2 (26) Go (53) Google AdSense (22) Go 语言 (23) GraphQL (24) GraphQL API (14) Gutenberg (34) http (21) https (22) Interface (19) Jquery (13) json (24) Laravel (37) Laravel 6 (55) Laravel 9 (25) Lighthouse (17) Lighthouse 5 (14) Linux (21) Migrate (13) Module (17) MySQL (78) MySQL 5.7 (22) Nginx (63) normalize.css (28) OKX (15) OneinStack (21) PHP (67) php-fpm (18) php.ini (24) PHP 7.1.12 (22) PHP 7.4 (26) phpmyadmin (15) PhpStorm (24) Polylang (57) postman (18) Query (17) queue (16) Rancher (24) Redis (49) response (13) RESTful (27) RESTful API (23) Shell (13) Shopify (19) SlyTranslate (20) SQL (24) String (14) TortoiseGit (14) Twenty Twenty-Five (20) Ubuntu (40) update (20) VPN (17) W3 Total Cache (35) Windows 10 (46) WireGuard (27) WordPress (126) WordPress 多语言 (13) WPCode (23) Wstunnel (14) Yii (40) Yii 2 (70) Yii 2.0 (51) 多语言翻译 (24) 技术博客 (15) 故障排查 (14) 数据库迁移 (16) 浏览器 (14) 阿里云 (19)

2026 年 8 月
 12
3456789
10111213141516
17181920212223
24252627282930
31