强缓存和协商缓存

本文介绍了HTTP缓存中的强缓存和协商缓存。强缓存通过Cache-Control和Expires头部控制,未过期资源直接从缓存中获取。协商缓存则在资源过期后,通过If-None-Match和If-Modified-Since与服务器交互确认是否更新。强缓存优先于协商缓存,确保高效加载网页资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

缓存分为强缓存和协商缓存

浏览器在请求某次资源时,会先获取该资源缓存的请求头信息, 然后根据header中的Cache-Control和Expires来判断是否过期。

  • 若没过期则直接从缓存中获取资源信息,包括缓存的header信息,因此此次请求不会与服务器进行通信。
  • 如果显示已经过期,浏览器会向服务器端发送请求,这个请求会携带第一次请求返回的有关缓存的header字段信息,比如客户端会通过If-None-Match头将先前服务器端发送过来的Etag发送给服务器,服务器会对比这个客户端发过来的Etag是否与服务器相同,如果相同,就将If-None-Match 的值设为false,返回304状态码,客户端继续使用本地缓存,不解析服务器返回的数据;若不相同就将If-None-Match 的值设为true 返回状态为200, 客户端会重新解析服务端返回的数据;客户端还会通过If-Modified-Since头将先前服务器端发送过来的最后修改时间戳发送给服务器,服务端通过这个时间戳判断客户端页面是否是最新的,如果不是最新的,则返回最新的,如果是最新的则返回304,客户端继续使用本地缓存。

强缓存:强缓存是利用http头中的Expires和Cache-Control 两个字段控制,用来表示资源缓存时间。强缓存中,普通刷新会忽略它,但不会清除它。强制刷新会清除它,请求会带上Cache-Control: no-cache和Pragma:no-cache;

Expires: Expires是http1.0的规范,它是一个绝对时间的GMT格式的时间字符串,这个时间代表资源的失效时间,只要发送请求时间是在Expires之前,那么本地缓存一直有效,则在缓存中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值