更新网站后 Cloudflare 缓存未清除导致页面不显示怎么办?

文章导读
更新网站后 Cloudflare 缓存未清除,最直接的处理是在 Cloudflare 后台执行“清除缓存”操作,或针对特定文件设置缓存 bypass 规则。适用场景为静态资源更新后页面仍显示旧内容,风险边界在于全量清除缓存可能短暂增加源站负载。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 常见问题
  7. 参考来源
A A

更新网站后 Cloudflare 缓存未清除,最直接的处理是在 Cloudflare 后台执行“清除缓存”操作,或针对特定文件设置缓存 bypass 规则。适用场景为静态资源更新后页面仍显示旧内容,风险边界在于全量清除缓存可能短暂增加源站负载。

先说结论:优先通过 Cloudflare 后台手动清除缓存,若频繁更新则配置页面规则跳过缓存。

  • 适合场景:网站内容更新后前端仍显示旧页面、图片或样式。
  • 先处理:登录 Cloudflare 后台使用"Purge Everything"或自定义清除。
  • 再验证:使用浏览器无痕模式或 curl 命令检查响应头。

命令速用版

Cloudflare 缓存清除主要通过后台操作,若需命令行管理可使用 API。快速处理思路如下:

  1. 登录 Cloudflare 后台,选择对应域名。
  2. 进入"Caching" → "Configuration"。
  3. 点击"Purge Everything"或"Custom Purge"输入具体 URL。

为什么会这样

Cloudflare 作为 CDN 会缓存源站资源以减少延迟,当源站内容变更但 CDN 未收到失效通知时,会继续返回旧缓存。

当浏览器或 CDN 请求资源时,如果服务器判断资源未变化,会返回 304 状态码,告诉客户端直接使用缓存。但对于 sitemap.xml 或频繁更新的页面,若 Cloudflare 一直返回 304,搜索引擎或用户就无法获取最新内容。这通常是因为缓存过期时间设置过长或缺乏缓存失效机制。

分步处理

1. 手动清除 Cloudflare 缓存

适用于临时更新场景。在 Cloudflare 后台"Caching"页面选择清除全部或特定文件。注意全量清除可能导致短时间内源站请求量上升。

2. 配置页面规则跳过缓存

适用于动态文件或频繁更新路径。进入"Rules" → "Page Rules",创建规则匹配 URL(如https://yourdomain.com/sitemap.xml*),设置"Cache Level"为"Bypass Cache"。这样 Cloudflare 会绕过缓存,每次都从源服务器获取最新内容。

更新网站后 Cloudflare 缓存未清除导致页面不显示怎么办?

3. 调整源站缓存控制头

适用于希望从源头控制缓存行为的场景。在服务器层面设置 Cache-Control 头部告诉 Cloudflare 不要缓存特定文件。

Apache 配置示例:

<Files "sitemap.xml"> Header set Cache-Control "no-store, no-cache, must-revalidate, max-age=0" </Files>

Nginx 配置示例:

location = /sitemap.xml { add_header Cache-Control "no-store, no-cache, must-revalidate, max-age=0"; }

该配置含义为不要存储、不要使用缓存、必须重新验证、立即过期。

更新网站后 Cloudflare 缓存未清除导致页面不显示怎么办?

怎么验证是否生效

使用 curl 命令检查响应头,确认 CF-Cache-Status 状态。

命令:curl -I https://yourdomain.com/path

若返回头中包含CF-Cache-Status: DYNAMICMISS,说明缓存已 bypass 或清除;若为HIT则仍命中缓存。同时检查浏览器开发者工具 Network 面板,确认资源状态码非 304 或内容已更新。

常见坑

  • 浏览器本地缓存干扰:有时 Cloudflare 缓存已清除,但浏览器仍保留旧副本。需强制刷新(Ctrl+F5)或清除浏览器缓存。
  • 通配符清除风险:使用自定义清除时若通配符匹配过宽,可能误删其他有效缓存资源。
  • 源站缓存未同步:若使用 WordPress 等 CMS,需同时清理插件缓存和服务器缓存,否则源站输出的仍是旧内容。

常见问题

清除缓存后多久生效?

通常立即生效,但全球节点完全同步可能需要几分钟。

为什么清了缓存还是显示旧页面?

可能是浏览器本地缓存未清除,或源站自身缓存(如 WordPress 插件)未更新。

如何避免每次更新都手动清缓存?

配置 Page Rules 对动态路径设置 Bypass Cache,或在源站设置较短的 Cache-Control 过期时间。

参考来源

  • Cloudflare 缓存导致 sitemap.xml 返回 304 状态码的解决方案
  • WordPress 怎么清理缓存
  • 网站内容更新了为什么显示不了