浏览器缓存

什么是浏览器缓存?

  1. 浏览器将请求后的资源存储为离线资源,当下次需要该资源时,浏览器会根据缓存机制来决定直接使用缓存资源还是向服务器请求资源
  2. 优点:减少不必要的数据的传输,降低服务器的压力。提升客户端的访问速度,从而提升用户的体验

浏览器的缓存过程

  1. 强缓存
    强缓存就是当我们访问url时,如果本地资源没有过期,就一直从本地读取资源,不会向服务器发送请求

实现方式

  1. 第一次访问网站的时候,请求服务器,浏览器会根据响应头判断是否对资源进行缓存,如果响应头中有ExpiresCache-Control则会进行强缓存,

  2. Expires是http1.0协议的字段,它是用来指定资源到期的时间,是服务器端的具体时间点,浏览器会使用它的到期时间和本地时间对比,如果本地时间被修改或者和服务器端的时间差距比较大,那就会造成不准确的问题
    在这里插入图片描述

  3. Cache-Control是http1.1协议的字段,它使用的是相对时间,解决了Expires的问题,如果两者同时存在,那么Cache-Control的优先级更高
    在这里插入图片描述

  4. 当强缓存失效后,会使用协商缓存,浏览器携带缓存标识(If-Modified-SinceIf-None-Match)向服务器发送请求,服务器收到请求,如果发现请求头中含有If-Modified-Since字段,则会根据它的值Last-Modified与服务器上资源最后修改的时间做对比,如果服务器上的资源最后修改的时间大于If-Modified-Since的值,那就会重新返回资源,状态码是200,否则返回状态码304,继续使用缓存文件。
    在这里插入图片描述

  5. 如果服务器发现请求头中含有的是If-None-Match字段,则会根据它的Etag字段值与服务器上该资源的Etag值进行对比,如果一致返回状态码304,代表资源没有更新,继续使用缓存文件,如果不一致就返回新的资源文件,状态码为200
    在这里插入图片描述

  6. If-Modified-SinceIf-None-Match的区别就是If-Modified-Since是根据资源最后修改的时间进行判断是否重新请求新的资源,即使资源内容没有修改修改时间发生变化也会请求服务器的资源,If-None-Match则是根据资源的内容进行判断,如果资源内容没有改变,即使最后修改时间发生变化也不会请求服务器的资源。If-None-Match的优先级更高,如果他们两个同时存在,那只有If-None-Match生效。

总结:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值