站点运营

站点运营:CDN 缓存与回源策略自查,别让缓存把更新内容锁在旧副本

CDN 与反向代理缓存能省回源、提速访问,但也容易让蜘蛛反复拿到旧副本。本文从缓存键、缓存时长、刷新流程、回源状态码和节点一致性几个方向,整理一份可落地的自查清单,并给出用响应头做快速验证的方法。

站点运营

站点运营:CDN 缓存与回源策略自查,别让缓存把更新内容锁在旧副本

缓存问题往往先在抓取上暴露

CDN 和反向代理缓存的初衷是减少回源、加快访问。但对搜索引擎蜘蛛来说,它拿到的响应并不一定来自你的源站。如果缓存键设计得过于宽松、过期时间设置得过长,或者发布新内容后没有及时刷新,蜘蛛就可能反复拿到同一份旧副本,误以为页面一直没有变化。这类问题在日常访问中很难被察觉,因为普通用户看到的也是缓存副本,打开速度还很快,没有人会去追问内容是不是最新的。

自查可以从这几个方向入手

1. 缓存键是否把不该合并的请求合并了

缓存键决定了哪些请求共享同一份缓存。合并得太多,就会把本该区分的页面混在一起:

  • 是否忽略了移动端与桌面端的区分,把两套模板缓存成一份;
  • 是否忽略 Cookie 或登录态,把个性化页面缓存成公共副本;
  • 是否把查询参数一律忽略,导致分页、筛选页共用同一份缓存;
  • 是否把不同语言、不同地区的版本合并到同一个键上。

2. 缓存时长与刷新机制

HTML 通常适合较短的缓存时间,带指纹的静态资源可以长缓存。重点检查:

  1. 首页、列表页等更新频繁的页面,缓存时间是否偏长;
  2. 发布、更新、删除内容后,是否有主动刷新或按目录批量刷新的流程;
  3. 刷新只覆盖 CDN 边缘,还是同时覆盖源站前面的代理缓存;
  4. 有没有可自助操作的刷新入口,还是只能等技术手动处理。

3. 回源请求与状态码

缓存节点回源时的行为,会直接影响蜘蛛对站点的判断。留意回源是否带上了正确的 Host、协议与路径;更要注意回源返回的 5xx、404 是否被缓存下来。被缓存的错误响应会在一段时间内持续返回给蜘蛛,影响比源站短暂故障更大。

4. 多节点生效不一致

多节点、多机房的环境下,同一时间不同节点可能返回不同版本。如果规范化标签、canonical、hreflang 恰好落在版本不一致的页面上,蜘蛛拿到的信号就会互相矛盾,难以判断哪个才是主版本。

一个简单的检查方法

用命令行工具直接看响应头最省事:观察 AgeX-CacheCache-ControlVia 等字段,多次请求同一个 URL,确认命中情况与过期时间是否符合预期。发布新内容后隔几分钟再请求一次,看看返回的是不是新版。带查询参数、带移动端 UA、带不同语言头的请求各测一次,能较快发现缓存键的问题。

缓存不是一次性配置,而是一条需要跟着内容节奏持续维护的链路。

日常维护的几条建议

  • 把刷新动作写进发布流程,而不是等出现问题再补救;
  • 不同类型的页面使用不同缓存策略,不要全站一套参数;
  • 错误响应设置较短缓存或不缓存,避免错误状态被放大;
  • 记录每次策略调整的时间与原因,方便后续回溯;
  • 改动后观察日志中的状态码分布与来源 IP,确认回源比例回到合理区间。

缓存的收益很明确,代价是链路变长、变量变多。定期做一遍这类自查,能减少用户看到新版、蜘蛛看到旧版这种不对称情况,出问题时也少走一些弯路。