站点运营

站点运营:缓存刷新与版本核对,别让更新只停在后台

内容发布后前台仍是旧页面,往往不是发布失败,而是缓存没刷新。本文梳理浏览器、CDN、反向代理和应用层缓存的关系,给出发布后的刷新步骤、缓存键设置、常见坑和发布清单,帮助站点运营把缓存刷新变成可执行、可验证的日常动作。

站点运营

站点运营:缓存刷新与版本核对,别让更新只停在后台

内容更新发布后,后台显示已保存,前台访问却还是旧版本。这种情况不一定发布失败,很多时候是缓存没有刷新到位。站点上往往同时存在多层缓存,只清一层,用户和抓取端拿到的版本就可能不一致。

先分清站点上的几层缓存

缓存不是单一开关,而是从浏览器到源站的多个环节。排查时先列清楚,再决定刷新顺序。

  • 浏览器缓存:用户本地保存的旧版页面和静态文件,受 Cache-Control、Expires 等响应头影响。
  • CDN 边缘缓存:节点上保存的副本,命中后直接返回,源站更新不一定立刻生效。
  • 反向代理与页面缓存:Nginx、Varnish 或应用自带的页面缓存,常按 URL 或缓存键保存整页 HTML。
  • 应用层缓存:对象缓存、查询缓存、片段缓存等,内容更新后如果键没失效,前台仍可能读旧数据。

这些层各有失效方式,只清 CDN 而不管应用缓存,或者只清首页而不管列表页,都会留下旧内容。

发布后的刷新与核对步骤

把刷新当作发布流程的一步,按从内到外的顺序处理,减少遗漏。

  1. 发布内容,记录本次修改的 URL、栏目和关联页面。
  2. 先清应用层缓存,再清反向代理或页面缓存,最后刷 CDN。
  3. 用无痕窗口、不同网络环境和移动端分别访问,排除本地缓存干扰。
  4. 查看响应头中的缓存标识,确认缓存是否命中、过期时间是否合理。
  5. 观察一段时间,确认详情页、列表页、首页和 feed 同步更新。

缓存键和版本号别忽略

静态资源可以加 hash 或版本号,让新文件走新地址,避免用户一直用旧文件。HTML 页面如果缓存时间设得很长,更新后用户可能长时间看到旧内容;对更新频繁的栏目,可以设置较短缓存或协商缓存。移动端和桌面端如果内容不同,缓存键要能区分,避免互相覆盖。登录态页面、用户中心等带个人信息的页面,不应被公共缓存长期保存。

几个容易踩的坑

  • 只刷了首页,栏目页和详情页还在旧缓存里。
  • 只清了 CDN,应用层页面缓存没有动。
  • 登录态页面被公共缓存,导致用户看到不该看到的信息。
  • 缓存过期时间设得很长,又没有主动刷新入口。
  • 定时生成静态页的任务失败,但没人发现,页面一直是旧的。
缓存刷新不是发布后的附加动作,而是发布流程的一部分。把“谁刷、刷什么、怎么验”写清楚,比事后到处找原因省事。

把刷新动作写进发布清单

每次更新前,确认本次涉及哪些 URL、哪些栏目、是否影响列表和首页。发布后由执行人完成刷新,再由另一人抽查。如果站点有回滚机制,回滚时也要同步处理缓存,避免旧版本和新版本混在一起。记录刷新时间、操作人和验证结果,方便下次排查。

缓存策略会随内容节奏变化。更新频率高的栏目可以缩短缓存时间,稳定页面可以适当放长。关键是让用户和抓取端拿到一致、可预期的版本,而不是让旧页面长期顶在前面。