计网回顾---HTTP缓存

根据缓存策略的不同主要可以分为两种类型:强制缓存对比缓存

强制缓存

所谓强制缓存是指,请求网络数据时,如果本地存在缓存数据且缓存数据有效,则直接使用缓存数据,不必进行网络请求;否则通过网络请求获取数据。

主要就是下面两个字段

Expires

(参考https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Expires

Expires 响应头包含日期/时间, 即在此时候之后,响应过期。

例如:Expires: Wed, 21 Oct 2015 07:28:00 GMT

缺点:它使用的是一个绝对时间,如果客户端修改了本地时间,缓存可能就会失效。

Cache-Control

(参考https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Cache-Control

它使用的是相对时间,例如它可以设置以下字段

max-age=

设置缓存存储的最大周期,超过这个时间缓存被认为过期(单位秒)。与Expires相反,时间是相对于请求的时间。

对比缓存

对比缓存每次都会进行网络请求。请求网络数据时,如果本地存在缓存数据且没有过期,先要发给服务端进行校验,来决定缓存数据是否需要更新,如果需要更新则服务端会返回新的数据,如果不需要更新则返回304(Not Modified),让客户端直接使用缓存数据。

Last-Modified/If-Modified-Since

在http协议中具体参数是通过head中的Last-Modified/If-Modified-Since来实现的,服务端返回Last-Modified参数,标记出资源最后修改的时间,客户端询问缓存是否过期的时候将此时间数据放入If-Modified-Since参数中,如果缓存数据可用则返回304状态码,否则直接返回接口数据以及更新后的Last-Modified参数

Etag/If-None-Match

ETag/If-None-Match参数也常被用于缓存的校验,当客户端请求数据时,服务端会返回数据以及ETag信息,ETag为资源在服务端的唯一标识,客户端再次请求数据的时候将会把标识信息放在If-None-Match参数中向服务端发起校验,如果缓存可用则返回304状态码,否则返回数据(状态码200)以及更新后的Etag信息。

强制缓存和对比缓存的区别

  • 强制缓存如果生效,不需要再和服务器发生交互,而对比缓存不管是否生效,都需要与服务端发生交互
  • 两类缓存规则可以同时存在,强制缓存优先级高于对比缓存,也就是说,当执行强制缓存的规则时,如果缓存生效,直接使用缓存,不再执行对比缓存规则。

获取缓存流程

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值