HTTP缓存


http缓存有两种,分别是强制缓存和协商缓存。

强制缓存

强制缓存是比较服务器响应头中的过期时间来进行判断是否取本地缓存的。基于响应头中的expires和Cache-Control字段。

expires字段

是绝对时间,如果客户端和服务端时间不一样,会导致判断缓存是否过期不准确。

Cache-Control字段

是相对时间,返回max-age,然后计算得到过期时间,浏览器再次请求时会判断是否过期。然后还有更多选项完成更精细的配置。
建议使用Cache-Control字段

使用流程

  1. 浏览器第一次请求资源,服务器返回该资源对应的生成时间。
  2. 客户端根据Cache-Control的max-age计算出资源过期时间。
  3. 客户端再次请求该资源时会判断资源是否已过期。没有过期使用缓存,过期了请求服务端。

协商缓存

协商缓存是服务器响应304状态码告诉客户端是否使用缓存;
有两种方法

方法一:

使用请求头中If-Modifed-Since和响应头中的Last-Modifed决定是否使用缓存;
使用流程:

  1. 当cache-control判断资源过期后,客户端会将Last-Modifed值赋值给If-Modifed-Since;
  2. 服务端收到请求后对比资源更新时间和If-Modifed-Since的值,如果大于If-Modifed-Since说明资源更新了,响应200.如果小于If-Modifed-Since资源没有更新,响应304;

方法二:

使用请求头中的If-None-Match和响应头中的Etag决定是否使用缓存;
使用流程:

  1. 当Cache-Control判断资源过期时,客户端会将资源的唯一标识Etag复制给If-None-Match;
  2. 服务端收到请求后判断If-None-Match值是否和对应资源唯一标识一样,如果不一样返回200.如果一样返回403;

http使用缓存流程图

http使用缓存流程

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值