http缓存机制详解之--协商缓存

本文详细介绍了HTTP缓存中的协商缓存机制,包括Last-Modify/If-Modify-Since和Etag/If-None-Match的工作原理。当浏览器发起请求时,服务器通过比较资源的修改时间和校验码来决定是否返回最新资源,从而优化网络性能。协商缓存需要二次请求以确认资源更新,而强缓存则直接使用本地副本。

协商缓存
1.服务器根据http头信息中的Last-Modify/If-Modify-Since或Etag/If-None-Match来判断是否命中协商缓存。如果命中,则http返回码为304,浏览器从缓存中加载资源。

  • 浏览器第一次请求一个资源的时候,服务器返回的header中会加上Last-Modify,Last-modify是一个时间标识该资源的最后修改时间,例如Last-Modify: Thu,31 Dec 2037 23:59:59 GMT。
    在这里插入图片描述
  • 当浏览器再次请求该资源时,发送的请求头中会包含If-Modify-Since,该值为缓存之前返回的Last-Modify。服务器收到If-Modify-Since后,根据资源的最后修改时间判断是否命中缓存。

在这里插入图片描述
如果命中缓存,则返回http304,并且不会返回资源内容,并且不会返回Last-Modify。

2.Etag/If-None-Match返回的是一个校验码(ETag: entity tag)。ETag可以保证每一个资源是唯一的,资源变化都会导致ETag变化*。ETag值的变更则说明资源状态已经被修改。服务器根据浏览器上发送的If-None-Match值来判断是否命中缓存。
在这里插入图片描述
此外还想强调一下,如果命中强缓存,浏览器是不会发送第二次请求的;而协商缓存都需要发送第二次请求来判断资源是否发生改变,服务器再决定返不返回资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值