详解浏览器Cache-Control缓存策略
Posted 悦码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了详解浏览器Cache-Control缓存策略相关的知识,希望对你有一定的参考价值。
原来用的是Expires策略,浏览器可以直接从浏览器缓存读取数据,而无需再次请求,它的值对应一个GMT,来告诉浏览器资源缓存过期时间,如果还没过该时间点则不发请求。
例如下面的例子,这是京东的首页里找的一个,时间都干到2027年了,现在的时间是2017年7月20,肯定还没到失效时间,so是304,使用本地缓存,也就是说在失效时间之内,一直使用缓存,除非把缓存删了。
但是这是http1.0的东西,现在使用的是http1.1的,这个可以忽略了因为这个是获取的本地的时间,我们改动的话,会出现问题,现在都用Cache-control了。
cache-control策略有的地方也叫新鲜度限值。
这个和上面说的expires效果是一样的,最大时间,用来控制浏览器是否直接从浏览器缓存取数据还是重新发请求到服务器取数据。
只不过Cache-Control的选择更多,设置更细致,如果同时设置的话,其优先级高于Expires。
Cache-Control可拥有如下值:
Public:指定响应会被缓存,并且在多用户间共享。
Private:响应只作为私有的缓存(见下图),不能在用户间共享。如果要求HTTP认证,响应会自动设置为private。。缓存只开放给某些特定的用户,比如服务器的用户,其他用户则不能缓存这些数据。
no-cache:指定不缓存响应,表明资源不进行缓存。
no-store:用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存,完全不存下來。
max-age:指示客户端该端时间内缓存都是最新的。单位为秒,就是在这个时间内,不会请求数据了,一直用的就是缓存。比如:Cache-Control:max-age=3600 表示60分钟之后过期,在这60分钟期间不会更新。
min-fresh :指示客户端希望获取一个在小于指定的时间内被更新过的资源,单位为秒:例如:Cache-Control:min-fresh =120 。向服务器获取2分钟内被更新过的资源。
max-stale:指示客户端可以接收超出超时期间的响应消息。例如:Cache-Control:max-stale =3600 ,向服务器获取超过缓存时间2分钟的资源。
以上是关于详解浏览器Cache-Control缓存策略的主要内容,如果未能解决你的问题,请参考以下文章