http 缓存

87 阅读1分钟

前言

http 缓存对于一个系统的性能提升非常重要,但是又特别容易被忽视。

强制缓存

Expires

  • Expires 存在于响应 header 中,值为资源的到期时间。Expires 属于 http 1.0 ,由于浏览器的时间容易存在误差,从而导致缓存的命中误差,所以就不要使用了。

Cache-Control

  • Cache-Control 存在于响应 header中。
  • Cache-Control 的值有:private, public, no-cache, max-age, no-store,还有一个不常用的值:must-revalidate

private :只有客户端可以缓存;
public: 客户端和代理服务器都可以缓存;
no-cache: 使用对比缓存规则(下面会介绍);
max-age: 缓存的内容多少秒后过期;
no-store: 不使用缓存;
must-revalidate: 验证过期后的缓存(在http协议规范中,允许客户端在某些特殊情况下直接使用过期缓存,must-revalidate 可以排上用场);

强制缓存的优先级高于对比缓存;Cache-Control 的优先级高于 Expires

对比缓存

Etag 和 If-None-Match

  • Etag 存在于响应 header 中,值为服务器计算出来的一个字符串。服务器资源有修改时,Etag值不相同。
  • If-None-Match 存在于请求 header中,值为上一次访问该资源的响应header中的 Etag 的值。

Last-Modified 和 If-Modified-Since

  • Last-Modified 存在于响应 header 中, 值为资源的最后修改时间。
  • If-Modified-Since 存在于请求 header中,值为上一次访问该资源的响应header中的 Last-Modified 的值。

Etag 的优先级高于 Last-Modified

微信截图_20220530201900.png

其他

欢迎大家关注微信公众号:赵公子聊前端