http缓存机制

6 篇文章 0 订阅

http缓存机制的作用:当设置了http缓存后可以减少http请求并减少网络中的数据传输
,从而提升web性能与用户体验。

http缓存有两种缓存策略:

  • 强制缓存
  • 协商缓存

使用强制缓存策略请求数据的过程

Created with Raphaël 2.2.0 client发送请求 是否命中本地缓存? 本地缓存是否过期? browser向server发送请求 browser更新缓存 返回缓存数据 yes no yes no

使用协商(对比)缓存策略请求数据的过程

Created with Raphaël 2.2.0 client发送请求 browser从本地缓存中获得缓存标识 browser询问server对应标识的缓存是否失效 server对比缓存,判断是否失效 server返回新数据和缓存策略 browser更新缓存 server返回缓存未失效的信息 browser从缓存中获得数据 yes no

强制缓存

强制缓存: 在缓存数据未失效的情况下,可以直接使用缓存数据,缓存失效后才向服务器发起请求,收到响应的数据后更新缓存

相关的响应头字段

Expires: 服务端返回的到期时间。即下一次请求时,请求时间小于服务端返回的到期时间,直接使用缓存数据。Expires是HTTP 1.0中的字段,其时间是由服务端生成的,但是客户端时间可能跟服务端时间有误差,这就会导致缓存命中的误差。现在默认浏览器均默认使用HTTP 1.1,使用Cache-Control替代。

Cache-Control: 常见的取值有privatepublicno-cachemax-ageno-store,默认为private

valueintro
private客户端可以缓存
public客户端和代理服务器都可缓存
max-age=x缓存的内容将在x秒后失效
no-cache需要使用对比缓存来验证缓存数据
no-store所有内容都不会缓存,强制缓存,对比缓存都不会触发

例如谷歌浏览器访问csdn首页的一张图片的响应头中的cache-control信息

cache-control: max-age=31104000

协商缓存

协商缓存: 需要进行比较判断是否可以使用缓存。浏览器第一次请求数据时,服务器会将缓存标识与数据一起返回给客户端,客户端将二者备份至缓存数据库中。再次请求数据时,客户端将备份的缓存标识发送给服务器,服务器根据缓存标识进行判断,判断成功后,返回304状态码,通知客户端比较成功,可以使用缓存数据。

缓存生效时,状态码为304,并且报文大小和请求时间大大减少。原因:服务端在进行标识比较后,只返回header部分,通过状态码通知客户端使用缓存,不再需要将报文主体部分返回给客户端。

缓存标识是协商缓存中的核心

Last-Modified:服务器在响应请求时,告诉浏览器资源的最后修改时间。

If-Modified-Since:再次请求服务器时,通过此字段通知服务器上次请求时,服务器返回的资源最后修改时间。服务器收到请求后发现请求头有If-Modified-Since字段,则与被请求资源的最后修改时间进行比对。

  • 资源的最后修改时间 > If-Modified-Since,表明资源又被改动过,则响应整片资源内容,返回状态码200;
  • 若资源的最后修改时间 <= If-Modified-Since,表明资源无新修改,则响应HTTP 304,告知浏览器继续使用所保存的cache。

EtagIf-None-Match,其优先级高于Last-ModifiedIf-Modified-Since

Etag:服务器响应请求时,告诉浏览器当前资源在服务器的唯一标识(生成规则由服务器决定)。

If-None-Match:再次请求服务器时,通过此字段通知服务器客户段缓存数据的唯一标识。

服务器收到请求后发现有头If-None-Match则与被请求资源的唯一标识进行比对

  • 不同,说明资源又被改动过,则响应整片资源内容,返回状态码200;
  • 相同,说明资源无新修改,则响应HTTP 304,浏览器继续使用所保存的cache。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值