浏览器缓存机制

机制

  • 浏览器发起请求,先在缓存中查找:请求结果 and 缓存标识
  • 浏览器拿到返回请求结果后,会将:请求结果 and 缓存结识  放入缓存中

强制缓存和协商缓存区别

  • 是否需要向服务器重新发起HTTP请求

强制缓存定义

向浏览器缓存查找该请求结果,并根据该结果的缓存规则来决定是否使用该缓存结果的过程。

有以下三种情况:

  • (1)
  • (2)
  • (3)

强制缓存的缓存规则

Expires

  • HTTP/1.0
  • 值为服务器返回该请求结果缓存的到期时间
  • Expire已经被Cache-Control替代
  • Expires控制缓存的原理是使用客户端的时间与服务端返回的时间做对比,那么如果客户端与服务端的时间因为某些原因(例如时区不同;客户端和服务端有一方的时间不准确)发生误差,那么强制缓存则会直接失效,这样的话强制缓存的存在则毫无意义
  • expires的时间值,是一个绝对值

Cache-Control

  • Cache-Control的优先级比expires
  • 相对值
  • 在无法确定客户端的时间是否与服务端的时间同步的情况下,Cache-Control相比于expires是更好的选择,所以同时存在时,只有Cache-Control生效

协商缓存定义

强制缓存失效后,浏览器发起请求,服务器决定是否使用缓存。有以下两种情况:

  • (1)
  • (2)

协商缓存规则

Last-Modified是服务器响应请求时,返回该资源文件在服务器最后被修改的时间。

If-Modified-Since则是客户端再次发起该请求时,携带上次请求返回的Last-Modified值,通过此字段值告诉服务器该资源上次请求返回的最后被修改时间。

Etag是服务器响应请求时,返回当前资源文件的一个唯一标识(由服务器生成。

If-None-Match是客户端再次发起该请求时,携带上次请求返回的唯一标识Etag值,通过此字段值告诉服务器该资源上次请求返回的唯一标识值。

Etag / If-None-Match优先级高于Last-Modified / If-Modified-Since,同时存在则只有Etag / If-None-Match生效。

总结

  • 强制 > 协商
  • 协商缓存由服务器决定
  • 协商生效,服务器返回304

参考:彻底理解浏览器的缓存机制​​​​​​​

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值