协商的缓存

在 Web 应用中,协商缓存机制能有效提升性能,减少不必要的数据传输,其工作流程如下:

客户端向服务端发起请求时,服务端会校验请求中是否携带特定标识,该标识用于判断缓存资源是否过期。若没有标识,表明这是第一次请求,服务端会生成标识并返回给客户端。此后,客户端再次请求相同资源时,会将该标识一同发送到服务端。

服务端接收到请求后,对比所携带的标识。若与服务器记录的一致,说明缓存命中,服务器会返回 304 状态码,告知浏览器直接复用本地缓存数据;若对比不通过,则意味着资源已被修改,服务器将返回 200 状态码,并发送最新的资源给浏览器,实现数据更新。

目前有两种常见的标识方式:

  • last - modified/if - modified - since:服务端通过响应头中的last-modified字段返回 GMT 时间格式的字符串,代表资源的最后修改时间。客户端再次请求时,会在请求头中添加if-modified-since字段,其值为之前接收到的last-modified值。服务端对比这两个值,若相同则复用缓存,不同则返回最新资源。
  • etag/if - none - match:服务端在响应头中通过etag字段返回资源的唯一标识符。客户端后续请求时,会在请求头中添加if-none-match字段,其值为之前的etag。服务端对比两者,一致则复用缓存。etag的优先级高于last-modified,能更精准地判断资源是否变化。

需要注意区分的是,expires属于强缓存,是后端在响应头中配置的值,与协商缓存的工作机制不同 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值