浏览器缓存 强缓存 协商缓存整理

浏览器缓存:https://mp.weixin.qq.com/s?__biz=MzI5MjU0Mjk5MA==&mid=2247483826&idx=2&sn=e38f5e5b928a6aa5c15371505b4e8d71&chksm=ec7e8ed3db0907c545393ea90ee8bfd7dc944ff013957228b200d66929767251b1982340d036&token=816776520&lang=zh_CN#rd

强缓存:ExpiresCache-Control

协商缓存:Last-ModifiedIf-Modified-SinceETagIf-None-Match

ETag和Last-Modified:

  • ETag相比于Last-Modified,它的精确度更高,因为当资源变化频率高于秒,Last-Modified就不准确了。
  • 分布式场景中尽量关闭ETag,因为不同机器生成的会不一样。Last-Modified则需要保持一致。

第一次请求资源,服务器response中:

  • expires 绝对时间,在客户端修改时间就可以引起问题
  • Cache-Control max-age相对时间,客户端再根据自己的时间计算绝对时间
  • Last-Modified 该资源在服务器上最后修改的时间,精确到秒(s)。在协商缓存时,服务器根据request中 If-Modified-Since 的值判断修改时间是否变化,未变化就返回304;变化了会在response中更新
  • ETag 该header表示的是服务器根据当前资源生成的一个唯一标识,只要资源变化该标识就会变化。在协商缓存时,服务器对比 If-None-Match 与根据当前资源生成的新ETag,同则304并发送刚刚的ETag;不同则返回资源内容。

ctrl+f5强制刷新网页时,直接从服务器加载,跳过强缓存和协商缓存;

f5刷新网页时,跳过强缓存,但是会检查协商缓存

原文地址:https://www.cnblogs.com/peekapoooo/p/14342430.html