什么是强缓存和协商缓存?

强缓存和协商缓存都是使用在 HTTP 协议中的缓存机制。

  1. 强缓存(Expires 和 Cache-Control): 强缓存是利用响应头中的 Expires 和 Cache-Control 字段来实现的。当浏览器发送请求时,如果命中了强缓存,则直接从缓存中读取资源,而不需要向服务器发送请求。Expires 是一个时间戳,表示资源的过期时间,而 Cache-Control 是一个指令集,可以指定资源的缓存策略。

    • 如果 Expires 字段的值大于当前时间,则说明缓存尚未过期,可以直接使用缓存。
    • 如果 Cache-Control 字段的值包含 "max-age" 指令并且其值大于 0,则说明缓存尚未过期,可以直接使用缓存。
  2. 协商缓存(Last-Modified 和 ETag): 协商缓存是在强缓存失效的情况下才会起作用的,它通过请求头中的 If-Modified-Since(对应 Last-Modified)和 If-None-Match(对应 ETag)字段来实现。客户端发送请求时携带上一次获得的资源的 Last-Modified 值和 ETag 值,服务器收到请求后会将这些值与当前资源的 Last-Modified 和 ETag 进行比较。

    • 如果 Last-Modified 值相同,并且没有其他条件使得资源变化,则服务器返回 304 Not Modified 状态码,浏览器直接使用缓存。
    • 如果 ETag 值相同,并且没有其他条件使得资源变化,则服务器返回 304 Not Modified 状态码,浏览器直接使用缓存。

协商缓存相对于强缓存的优势是,它能够更准确地判断资源是否发生了变化,而不仅仅依赖于时间戳。例如,当资源被修改但修改很小的时候,协商缓存可以避免重新传输整个资源,提高性能和效率。

在使用缓存策略时,可以根据实际场景选择使用强缓存或协商缓存,或者同时使用两者,以达到更好的缓存效果。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值