Skip to content

浏览器缓存:memory cache、disk cache 与验证路径

主题边界

  • 浏览器缓存题不能只停在“强缓存 / 协商缓存”四个字,还要理解浏览器内部会怎么命中 memory cache、disk cache 和 revalidation。
  • 同一个资源的缓存行为也会受请求模式、导航类型、缓存头和浏览器策略影响。

机制与流程

  • 浏览器优先尝试从更快的缓存层命中,例如 memory cache;未命中时再进入 disk cache 或发起条件请求。
  • Cache-Control: max-age / immutable 等决定是否可以直接复用;ETag / If-None-MatchLast-Modified / If-Modified-Since 决定重验证路径。
  • 导航、子资源请求、软刷新和强刷新对应的缓存策略并不完全相同。

关键差异

  • 强缓存强调“无需发请求即可复用”,协商缓存强调“发请求验证后决定是否复用”。
  • 浏览器缓存只是一层,CDN 缓存、Service Worker 缓存和应用层缓存并不等价。

边界条件

  • HTML 通常不能像带 hash 的 JS/CSS 一样长期强缓存,否则回滚和版本切换很容易失配。
  • 命中 304 不代表完全没有成本,连接、往返时间和验证头依然存在。

工程落点

  • 缓存策略必须和发布策略一起设计,否则首屏、回滚和灰度都容易出问题。
  • 这道题和 CDN、Service Worker、版本哈希、Cache Busting 是一整条链。

相关主题