WordPress 前台改完还是旧页:浏览器、CDN、页面缓存、对象缓存怎么分层清

前天改了首页一句标语,后台明明已经是新文案,无痕窗口刷了十几次前台还是旧的。客服以为没保存成功,运营以为被回滚了,最后一对响应头才发现:页面缓存和 CDN 各自留了一份旧 HTML。WordPress 改完内容前台还是旧版,多半不是数据库没写上,而是某一层还在喂旧页。

先分清是哪一层在吐旧内容

别一上来就「清全站缓存」或重启机器。用无痕窗口打开出问题的 URL,F12 → Network,点开文档请求(通常是第一个 HTML),盯这几个响应头:

  • x-cache / cf-cache-status / age:边缘或反向代理是不是 HIT
  • cache-control:是 public, max-age=... 还是 no-store / private
  • set-cookie:登录态有没有被错误地跟可缓存 HTML 绑在一起

把「浏览器本地 → CDN 边缘 → 源站页面缓存 → 对象缓存」四层分开想。每一层清法不同,混着清又慢又容易把整站打冷。

浏览器:先排除「你自己的缓存」

同事说「我这边已经新了,你那边还旧」,优先怀疑本机缓存或扩展。

  1. 无痕/隐私窗口打开同一 URL,或换一台没开过该站的设备。
  2. 硬刷新(Ctrl/Cmd + Shift + R)。硬刷新变新、普通刷新仍旧,多半是浏览器或中间代理在缓存 HTML。
  3. 若站点挂了 Service Worker / PWA,在 Application 面板看导航请求是不是还被拦截。

只读头探测示例(不要带管理后台 Cookie 去乱刷生产接口):

bash 复制代码
curl -sI 'https://example.com/' | egrep -i 'HTTP/|cache-control|x-cache|cf-cache|age|vary|set-cookie'

营销首页若故意边缘缓存,HIT 正常;但你刚改完且清过 CDN 后仍长期 HIT、且 age 很大,说明清理没落到这个 URL。

CDN:按 URL 定点 purge

很多外贸站前面挂了 Cloudflare 或其它 CDN。改标题、改首页模块后,边缘仍 HIT,访客看到的就是更早生成的那份 HTML。

建议顺序:

  1. 只 purge 变更相关的 URL(首页、该文 permalink、相关归档),先验证这几个变新。
  2. 再查规则:带 utm_ 的 URL 是否被当成不同缓存键,导致「有的链接新、有的旧」;查询串策略是否把预览参数也缓存进去了。
  3. 登录态、预览链接、/wp-admin/、购物车/结账应旁路,不要和匿名首页共用同一份全页缓存。

全站 purge 可以救急,高峰期却容易把回源打满。能定点就定点。缓存键和排除规则怎么对齐,可以对照 WordPress CDN 与缓存加速要点。

源站页面缓存:发布钩子有没有接到

CDN 清干净了,源站页面缓存插件仍可能继续吐旧 HTML。常见表现:直连源站 IP 也是旧文案,或 curl --resolve 到源站仍旧。

核对这几项:

  • 发布/更新后,插件是否自动失效对应 URL;手动更新后是否还要在插件里清「此页」。
  • 多语言、自定义文章类型、页面构建器(内容在 post meta)是否被「仅清文章 permalink」漏掉。
  • 是否同时开了两套页面缓存,规则互相覆盖------你清了 A,B 还在。

生产环境慎用「清空全部对象 + 全部页面」的大按钮,除非你清楚流量和预热策略。优先清问题 URL,再抽查列表页、分类页是否还引用旧摘要。

对象缓存:HTML 新了,模块还旧

有时壳子新了,侧栏、菜单、相关文章还是旧的------更像 object cache / transient 锁住了查询结果或小部件输出。

  1. 用了 Redis/Memcached 时,低峰对对象缓存做有针对性的 flush(先确认面板清的是对象缓存,不是整站文件缓存)。
  2. 查自建 transient 是否把首页模块锁了很长过期时间,改内容后没删对应 key。
  3. 菜单、小工具、页面构建器全局模块常被单独缓存------清页面不等于清这些片段。
bash 复制代码
# 有 WP-CLI 时,确认对象缓存后端(只读探活,按环境调整)
wp cache type

对象缓存异常时,也会出现「后台已新、接口偶发旧数据」,要和纯 HTML 边缘 HIT 分开看。

改完再收工的验收

  1. 无痕窗口打开变更 URL:文案/标题已是新版;再换一个带 utm_source=test 的链接,避免只测一种缓存键。
  2. curl -sI 看问题 URL:清过后应出现 MISS/BYPASS 或更小的 age;确认不是登录 Cookie 下的特例。
  3. 直连源站与走 CDN 各看一次,避免「边缘新了、源站还旧」或反过来。
  4. 相关列表页、首页模块、菜单若引用了该内容,也抽查,防止片段缓存漏清。

前台还是旧版,很少是 WordPress 没保存,多数是某一层还在提供旧响应。按浏览器 → CDN 定点 → 源站页面缓存 → 对象缓存往下压,通常比重启整机更快,也少误伤高峰流量。

相关推荐
乐观的Terry3 小时前
AI翻译助手-JWT与redis无状态认证
数据库·redis·缓存
Vitaliy Kostrov(柯维远)4 小时前
Multi-CDN 决策闭环:QoE、成本、安全与内容正确性如何进入同一个策略引擎?
安全·网络安全·云计算·音视频·负载均衡·cdn
牧瀬クリスだ4 小时前
Redis String深度解析:从底层到五大实战场景
数据库·redis·缓存
鬼手点金4 小时前
缓存作为架构约束
开发语言·前端·人工智能·python·microsoft·缓存·架构
云上工程笔记5 小时前
2026年大模型Token成本测算推荐清单:输入输出、缓存、并发与峰值用量
人工智能·spring boot·缓存·token
Agent世界5 小时前
百度OCR 2开源:KV缓存从47GB压到1.77GB
百度·缓存·开源·大模型·ocr
Zhang~Ling1 天前
Redis 基础教程:从常用命令到实际业务场景
数据库·redis·缓存
程序员清风1 天前
缓存、索引与数据结构的工程选择
数据结构·spring·缓存
code2cat1 天前
【随笔】RAG语义缓存:问题很相似,答案就能直接复用吗
java·缓存·知识库·rag