CDN刷新与预热实战:先刷新还是先预热?顺序不对等于白做

去年一个客户更新了网站首页,但用户看到的还是旧版本。他在CDN控制台执行了预热,等了半小时,还是旧内容。他问我:“预热怎么没用?”
我问他:“刷新做了吗?”
他说:“刷新是干嘛的?”
CDN缓存不会自动更新。源站文件变了,CDN节点上存的还是旧的。预热不会覆盖已有的缓存,只会缓存当前版本。
正确顺序是:先刷新,再预热。顺序反了,等于白做。
01 刷新和预热是两件完全不同的事
刷新(Purge):向CDN节点下发缓存失效指令,标记已缓存的资源为过期。用户再次请求时,节点回源获取最新资源并重新缓存。
预热(Prefetch):CDN节点主动从源站拉取资源并缓存到节点上。用户首次请求时直接命中缓存。
| 操作 | 作用 | 命中率影响 | 典型场景 |
|---|---|---|---|
| 刷新 | 删除旧缓存,强制回源 | 临时下降 | 源站资源更新、内容更正 |
| 预热 | 主动拉取资源到节点 | 提升 | 大促预热、首次接入、安装包发布 |
那家客户只做了预热,节点上已有的旧缓存没有被清除,预热不会覆盖旧缓存,新文件永远上不去。
02 先刷新,再预热——顺序错了等于白做
源站资源更新后,正确的操作顺序是:先执行刷新,待刷新生效(约5分钟)后,再执行预热。
为什么不能跳过刷新? 预热不会更新已有缓存,只会缓存“当前看到的版本”。如果节点上已经有旧缓存,预热不会主动覆盖它。用户请求时,节点返回的还是旧文件。
为什么不能先预热后刷新? 预热会把“当前版本”推到节点,再刷新又把它清掉,等于白白消耗配额和回源带宽。
03 不同场景的操作策略
日常内容更新:更新单个文件时,刷新对应URL(约5分钟生效),再预热该URL。生效后,用户访问到最新内容。
大版本发布:涉及多个文件更新时,建议目录刷新清空整个目录下所有缓存,再预热目录下的核心资源。大批量刷新会导致回源带宽和请求突增,建议在网站流量的低峰时期操作。
违规资源清理:源站删除违规文件后,立即执行URL刷新清除CDN节点缓存,防止资源仍被访问到。
写在最后
那家客户后来按正确顺序操作——先刷新首页URL,再预热新内容,用户看到了最新页面。
“顺序做对了,预热才真正有用。”他说。