← 中文资源

简体中文版本

安全清理 CDN 缓存避免回源风暴

按发布标签分批失效缓存,提前预热源站,并从多个边缘节点确认新版本已生效且源站错误率稳定。

阅读英文原文

目标

在不引发源站过载的前提下,用发布标签精确失效 CDN 缓存,分批替换内容,并从多个边缘节点确认新版本已经生效。

步骤

  1. 为本次发布的每个变更资源打上 release-2026-10-21 标签,列出受影响的 HTML、入口 bundle、静态资源和接口响应。
  2. 评估源站容量,先用预热客户端通过 CDN 拉取入口资源,确认源站延迟正常且缓存条目已经建立。
  3. 按标签分批失效:先 HTML 和入口 bundle,再静态资源,最后媒体文件;每批等待缓存重新填充后再继续:
curl -X POST "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/purge_cache" \
  -H "Authorization: Bearer $CF_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{"tags":["release-2026-10-21"]}'

curl -sI https://www.example.com/app.js \
  | grep -iE "cf-cache-status|age|etag|last-modified"
  1. 从至少三个边缘位置请求变更后的 URL,检查缓存状态、年龄和 ETag。
  2. 持续观察源站 5xx、延迟和带宽 30 分钟;若发布有问题,恢复上一版本产物并再次按相同标签失效。

验证

多个 POP 返回新 ETag 和新的缓存条目;CDN 命中率在预热后回到基线;源站 5xx 未超过错误预算;主要页面和接口返回的内容与发布产物一致。

回滚

缓存失效本身无法撤销,但内容可以重新发布:恢复上一版本产物后再次按同一标签失效即可。不要因为发布失败而“清空全部缓存”,这会把所有访客同时打向源站,是常见的自伤式故障;也不要提前删除上一版本产物,否则回滚窗口内无法恢复。如果 CDN 支持软失效,可对 HTML 使用软失效,让边缘在重新验证期间继续提供旧内容,避免完全不命中。