【JavaScript】浏览器的缓存策略:强缓存和协商缓存

通常浏览器缓存策略分为两种:强缓存和协商缓存,并且缓存策略都是通过设置 HTTP Header 来实现的。

强缓存(如果命中就不会去请求服务器,返回状态码200)

如何设置强缓存?

1,设置http头:Cache-Control,以客户端相对时间为准

Cache-Control:max-age=3600(单位是秒)。

2,expires(http1.0产物)会将资源的实效日期告知客户端。
Expires 的一个缺点就是,返回的到期时间是服务器端的时间,这样存在一个问题,如果用户更改了本地时间,就有可能造成误差
在这里插入图片描述

当同时设置cache-control和expires时,会优先使用cache-control

协商缓存(如果资源没有做改变,那么服务端就会返回 304 状态码 Not Modify)

1,If-Modified-since(请求)Last-Modified (响应),
首次请求服务器会返回资源的更新时间,
以后请求会在请求头携带if-modified-since中带着这个时间,如果资源发生了更新,则返回新资源

2,If-None-Match(请求)和ETag (响应)
eg:
第一次客户端想服务器请求一个index.css,第一次响应时,服务器会在响应头添加: Etag: ‘value’
这个value一般是index.css的md5值。 value = md5(index.css)
第二次去请求index.css的时候浏览器会带着一个请求头: if-nont-match: ‘value’
服务器就可以在后台比对 if-nont-match请求头和上一次etag的区别:如果相同就返回304,Not Modify,如果不同就返回新的资源,并重新设置Etag的值

两者的区别:

在这里插入图片描述
Etag和Catche-Control的区别:
Etag再次请求了服务器,如果etag和if-none-match相等就不下载文件内容,强缓存如果命中,根本就不会发起请求

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值