原来用的是 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 分钟的资源。
web 前端中文站 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:详解浏览器 Cache-Control 缓存策略