Appearance
浏览器缓存:memory cache、disk cache 与验证路径
主题边界
- 浏览器缓存题不能只停在“强缓存 / 协商缓存”四个字,还要理解浏览器内部会怎么命中 memory cache、disk cache 和 revalidation。
- 同一个资源的缓存行为也会受请求模式、导航类型、缓存头和浏览器策略影响。
机制与流程
- 浏览器优先尝试从更快的缓存层命中,例如 memory cache;未命中时再进入 disk cache 或发起条件请求。
Cache-Control: max-age / immutable等决定是否可以直接复用;ETag/If-None-Match、Last-Modified/If-Modified-Since决定重验证路径。- 导航、子资源请求、软刷新和强刷新对应的缓存策略并不完全相同。
关键差异
- 强缓存强调“无需发请求即可复用”,协商缓存强调“发请求验证后决定是否复用”。
- 浏览器缓存只是一层,CDN 缓存、Service Worker 缓存和应用层缓存并不等价。
边界条件
- HTML 通常不能像带 hash 的 JS/CSS 一样长期强缓存,否则回滚和版本切换很容易失配。
- 命中 304 不代表完全没有成本,连接、往返时间和验证头依然存在。
工程落点
- 缓存策略必须和发布策略一起设计,否则首屏、回滚和灰度都容易出问题。
- 这道题和 CDN、Service Worker、版本哈希、Cache Busting 是一整条链。