强缓存和协商缓存的那些事儿~

#缓存

浏览器在请求网页资源的时候,不会直接从服务器去获取,而且先判断是否命中缓存,如果命中了,会从缓存设备里面去获取资源,如果没有命中,则从服务器获取

优点

  1. 减少数据传输,降低带宽
  2. 减少请求,从而减少服务器压力,提高性能
  3. 加快网页响应速度

#缓存分类

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

  • 浏览器在请求某一资源时,判断是否命中强缓存(cache-control和expires信息),若命中直接从缓存中获取资源信息,本次请求就不会与服务器进行通信
  • 如果没有命中强缓存,浏览器会发送请求到服务器,由服务器来判断是否协商缓存命中。若命中,则浏览器可以直接从缓存获取;否则从服务器获取最新的资源内容。

#区别

缓存获取资源形式状态码发送请求到服务器
强缓存从缓存获取200(from cache)否,从缓存获取
协商缓存从缓存获取304(not modified)是,通过服务器判断

#如何命中强缓存

  • Expires:response header里的过期时间,浏览器再次加载资源时,如果在这个过期时间内,则命中强缓存。
  • Cache-Control:当值设为max-age=300时,则代表在这个请求正确返回时间(浏览器也会记录下来)的5分钟内再次加载资源,就会命中强缓存。

#如何命中协商缓存

  • Last-Modify/If-Modify-Since:浏览器第一次请求一个资源的时候,服务器返回的header中会加上Last-Modify,Last-modify是一个时间标识该资源的最后修改时间;当浏览器再次请求该资源时,request的请求头中会包含If-Modify-Since,该值为缓存之前返回的Last-Modify。服务器收到If-Modify-Since后,根据资源的最后修改时间判断是否命中缓存
  • Etag:web服务器响应请求时,告诉浏览器当前资源在服务器的唯一标识(生成规则由服务器决定)。
  • If-None-Match:当资源过期时(使用Cache-Control标识的max-age),发现资源具有Etage声明,则再次向web服务器请求时带上头If-None-Match (Etag的值)。web服务器收到请求后发现有头If-None-Match 则与被请求资源的相应校验串进行比对,决定是否命中协商缓存;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

superTiger_y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值