缓存分类

  • HTTP缓存种类: 私有缓存、共享缓存
  • 具体分类:浏览器缓存、代理缓存、网关缓存、CDN、反向代理、负载均衡
  • 浏览器缓存(私有)内容有: 导航、网页、源码,可以实现离线浏览
  • 代理缓存(共享)

缓存控制 Cache-Control

缓存具体形式可以通过HTTP请求头携带 Cache-Control属性实现

HTTP缓存 - 图1缓存驱逐:新的缓存将旧的缓存内容覆盖的过程叫缓存驱逐
缓存计算方式:

  • 判断有无max-age过期时间,有的话直接返回
  • 没有max-age 判断有无 expires 属性
  • 没有expires 判断有无 last-Modified, last-modified-Date/10即是缓存时间

鲜活度

加速资源: 对不频繁更新文件 css/js加版本号,这个技术叫 revving ,除了版本号之外,也可以使用时间戳和hash来保证唯一性

强弱缓存:

  • 强缓存: 服务器应答返回ETags, 客户端携带 If-None-Match 属性访问,
  • 弱缓存: 服务器应答返回last-Modified,客户端后续请求需携带If-Modified-since 属性访问,

Vary HTTP 响应头决定了对于后续的请求头,如何判断是请求一个新的资源还是使用缓存的文件。
Vary缓存: 具备动态内容的多样性,常用来检测不同设备的缓存,使用: Vary:User-Agent

参考资源:
MDN-HTTP缓存