Appearance
CDN、浏览器缓存与发布治理:版本化、回滚与缓存失配
主题边界
- 缓存策略的重点不只是命中率,还包括发布、回滚和多层缓存之间的一致性。
- 前端最常见的线上缓存事故,往往不是单层配置错误,而是 HTML、JS、CDN 和浏览器缓存策略没有协同设计。
机制与流程
- 带 hash 的静态资源通常适合长期强缓存,因为 URL 变化就意味着内容变化。
- HTML 往往需要更短缓存或重验证,因为它负责引用最新的资源清单,过长缓存容易指向已失效的产物。
- CDN 缓存、浏览器缓存和应用层缓存会叠加,发布时需要明确谁先失效、谁可以继续命中。
关键差异
- Cache Busting 解决的是资源版本识别,回滚治理解决的是旧版本用户如何安全回到可用资源集合,二者不是同一问题。
- CDN 刷新只影响边缘节点,不自动清掉浏览器本地缓存;两层策略必须一起考虑。
边界条件
- 如果 HTML 长缓存但 JS 带 hash 短变更,会出现旧 HTML 引用新旧资源混杂的典型错配。
- 删除旧产物过快会让仍持有旧 HTML 的用户直接白屏,因此保留窗口和回滚策略很重要。
工程落点
- 前端发布体系必须把资源 hash、HTML 缓存、CDN 刷新、灰度和回滚当成一套系统来设计。
- 这道题和浏览器缓存、Service Worker、SSR 产物和监控告警天然连在一起。