服务公告
CDN 缓存了错误页面:强制回源与缓存刷新
发布时间:2026-10-17 12:03
## 症状现象 源站短暂故障过几分钟,恢复之后部分用户看到的仍是错误页:5xx 提示、空白页挂在 CDN 上迟迟不更新。用户清了浏览器缓存也没用,因为问题不在浏览器——CDN 把源站故障时返回的错误响应也当正常内容缓存了,TTL 没到之前,边缘节点一直把错误页发给用户。源站已健康、CDN 还在发病,就是这个问题。 ## 为什么错误页会被缓存 CDN 的缓存逻辑默认看缓存头与状态码策略:源站返回的响应如果带了较长的缓存时间头,或 CDN 的状态码缓存策略放开了对 5xx 的缓存,边缘节点就会保存这份响应并在 TTL 内复用。多数 CDN 默认不缓存 5xx,但源站应用把错误渲染成了 200 状态的自定义错误页(带长缓存头)时,CDN 无法分辨它是错误内容——状态码 200 加缓存头,缓存得理直气壮。这也是为什么"返回码规范化"是应用层的功课。 ## 处理:刷新与强制回源 第一步立即刷新:在 CDN 控制台对问题 URL 提交缓存刷新,边缘节点丢弃缓存版本,下次请求回源拿最新内容。刷新是按 URL 或目录粒度的,范围别贪大,全站刷新会引发回源风暴。第二步验证回源:刷新后从不同地域访问,确认拿到的是正常页面;仍有区域异常,等各节点刷新生效或再刷一次。若错误页被缓存的范围大,配合预热功能把正常内容主动推到边缘节点,减轻回源压力。 ## 预防:从源头管住 应用侧:错误页返回正确状态码,5xx 就是 5xx,别伪装 200;错误响应的缓存头明确设为不缓存,Cache-Control 写 no-cache。CDN 侧:检查状态码缓存策略,5xx 不开缓存;对动态接口路径整体设短缓存或不缓存。监控侧:给源站可用性配监控,故障时第一时间知道,恢复后主动刷一波 CDN,把"自愈时间"从 TTL 长短里抢回来。顺云的高防与 CDN 类链路同理,缓存策略与回源配置切换前逐项核对,故障演练时把"CDN 缓存错误页"这个场景演一遍,真出事时就不慌。下一篇: 数据导出指引发布