http缓存之强缓存和协商缓存

服务器向游览器发送的数据可能存在过期,所以就出现了强缓存和协商缓存,目的就是为了减轻服务器的压力。

强缓存

强缓存就是缓存没有过期,浏览器直接从缓存中去取数据。

协商缓存

协商缓存就是缓存过期了,浏览器要和服务器商量缓存过期后,我们还可以使用缓存吗?是不是要返回新的数据?如果服务器返回的是304状态码就是缓存没有过期,还可以使用。如果是200状态码,说明缓存中的数据已经过期了。

协商缓存有三种解决方案

1.expires

expires返回的是过期时间,但是由于浏览器发送请求的时候,返回的是服务器的时间,这里有个问题就是expires时间是服务端返回的,我们对比的确是浏览器端。在时间上不一致(因为我们是从后端返回的数据,如果后端返回的数据变化了,缓存对比前端的expires时间却是没有变化,这时候浏览器拿到的就不是最新的数据了。)

所以有了第二个方案

2.Cache-control

Cache-control(在http1.1引入的)采用的是过期时长并且是以秒进行对比的,所以会出现不准确的情况,因为服务器的资源有可能会在0.x秒发生变化。

 

这个是Cache-control的其它常用指令的作用。        

所以有了第三个方案

下面是协商缓存的最终解决方案(Etag)

eTag返回文件内容唯一标识,对比的是以毫秒进行的,浏览器既能从缓存中拿到最新的数据之后,服务端的请求压力也会减小。

视频地址是

HTTP缓存自述-5分钟了解我的关键历程【前端面试宝典】_哔哩哔哩_bilibili  转自思学堂up主。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值