浏览器缓存机制(HTTP缓存)

           之前只知道有浏览器缓存,确不知道到底什么是缓存,强缓存与协商缓存??? 一头雾水呀,今天俺就来好好的总结一下。。。

        感谢https://www.cnblogs.com/chengxs/p/10396066.html   原文作者支持!

  1. 浏览器缓存介绍

        浏览器的缓存机制也就是我们说的HTTP缓存,是根据HTTP报文的缓存标识进行的,

所以在分析之前,我们先使用图文简单介绍一下HTTP报文,分为两种:

        HTTP请求报文,HTTP响应报文

  浏览器与服务器通信的方式为应答模式,即是:浏览器发起HTTP请求 – 服务器响应该请求。那么浏览器第一次向服务器发起请求后拿到请求结果,会根据响应报文中HTTP头的缓存标识,决定是否缓存结果,是则将请求结果和缓存标识存入浏览器缓存中。。。

     2. 强制缓存  与  协商缓存

        强制缓存就是向浏览器缓存查找该请求结果,并根据该结果的缓存规则来决定是否使用该缓存结果的过程,

     one  强制缓存标识不存在 内容不存在则,直接请求服务端,若存在则使用本地缓存

     two  若缓存标识  存在  缓存内容过期或者不存在,则开始协商缓存,向服务器发送请求,如果成功,则返回304页面,失败则返回200,后端返回数据,页面重新加载。

      3. 那么强制缓存的缓存规则是什么?

        当浏览器向服务器发送请求的时候,服务器会将缓存规则放入HTTP响应的报文的HTTP头中和请求结果一起返回给浏览器,控制强制缓存的字段分别是Expires和Cache-Control,其中Cache-Conctrol的优先级比Expires高。 如下图:

  注:在HTTP/1.1中现在cache-control  已经把 Expires取代了,并且如果同时设置,前者的优先级高于后者,Expires具有时区的问题。所以这里只说明cache-control...

在HTTP/1.1中,Cache-Control是最重要的规则,主要用于控制网页缓存,主要取值为:

(1)public:所有内容都将被缓存(客户端和代理服务器都可缓存)

(2)private:所有内容只有客户端可以缓存,Cache-Control的默认取值

(3)no-cache:客户端缓存内容,但是是否使用缓存则需要经过协商缓存来验证决定

(4)no-store:所有内容都不会被缓存,即不使用强制缓存,也不使用协商缓存

(5)max-age=xxx (xxx is numeric):缓存内容将在xxx秒后失效  这里取得是相对秒数



总结

          强制缓存优先于协商缓存进行,若强制缓存(Expires和Cache-Control)生效则直接使用缓存,若不生效则进行协商缓存(Last-Modified / If-Modified-Since和Etag / If-None-Match),协商缓存由服务器决定是否使用缓存,若协商缓存失效,那么代表该请求的缓存失效,重新获取请求结果,再存入浏览器缓存中;生效则返回304,继续使用缓存

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值