而must-revalidate的作用就是让那个“unless”失效 ,带有must-revalidate的缓存,在任何情况下,都必须成功 revalidate 后才能使用,没有例外。 各种缓存服务器软件,比如 NGINX、Vanish、Squid 都或多或少的允许通过Cache-Control指令或者修改软件配置的方式返回过期缓存,同时它们也都遵循了 HTTP 规范,加上must-revalidate的...
must-revalidate和no-cache都不能阻止这一行为,只有no-store禁止缓存才能阻止。 所以无缓存一般写成: resp.setHeader("Cache-Control","no-cache,no-store,must-revalidate");
must-revalidate 在设置了max-age,已经过期了,我们必须去源服务端发送请求,重新获取数据来验证这个内容是否真的过期了,而不能直接使用本地的缓存。 proxy-revalidate 用在缓存服务器中 其他 no-store 区分no-cache (任何一个节点都不可以进行缓存,永远都要去拿新数据) no-transform 主要用在proxy服务器那边,告诉代...
在浏览器中,must-revalidate与no-cache指令在某些情况下具有相似效果,但这并非规范规定的功能。理解并正确应用Cache-Control指令是避免误用的关键。在实际项目中,误用这些指令可能导致缓存管理问题,正确的做法是根据具体需求选择合适的指令组合。总之,must-revalidate在缓存服务器上虽有作用,但在浏览器端...
中间缓存服务器可通过配置,使其提供一些陈旧的对象,以提高性能。如果原始服务器希望缓存能遵守过期信息,可以在相应头部添加cache-control: must-revalidate,告诉缓存,在没有跟服务器校验的情况下,不能提供这个对象的旧版本,如果服务器不可用,那么缓存必须返回504Gateway Timeout的错误 ...
网页的缓存是由http消息头中的“Cache-control”来控制的,常见的取值有private、no-cache、max-age、must-revalidate等,默认为private。其作用根据不同的重新浏览方式分为以下几种情况: 打开新窗口 值为private、no-cache、must-revalidate,那么打开新窗口访问时都会重新访问服务器。
Cache-Control除了在响应中使用,在请求中也可以使用。我们用开发者工具来模拟下请求时带上Cache-Control:勾选Disable cache,刷新页面,可以看到Request Headers中有个字段Cache-Control: no-cache。 同时在Response Headers中也能到Cache-Control字段,它的值是must-revalidate,这是服务端设置的。
no-store,请求和响应的信息都不应该被存储在对方的磁盘系统中; must-revalidate,对于客户机的每次请求,代理服务器必须想服务器验证缓存是否过时 目前Cache-Control请求字段被各个浏览器支持的较好,其优先级也比较高,当和别的字段(如Expires)一起用时,会覆盖其他字段。
must-revalidate:作用与no-cache相同,但更严格,强制意味更明显。但这只是理论上的描述,根据我在ff6上的测试,它几乎不起作用:只要请求的频率加快到一定程度,服务器就接收不到请求。 no-store:缓存将不存储response,包括header和body。测试结果表明,除每次请求都必发送到服务器外,响应代码均是200,且request并没有发送...
而must-revalidate的作用就是让那个“unless”失效 ,带有must-revalidate的缓存,在任何情况下,都必须成功 revalidate 后才能使用,没有例外。 各种缓存服务器软件,比如 NGINX、Vanish、Squid 都或多或少的允许通过Cache-Control指令或者修改软件配置的方式返回过期缓存,同时它们也都遵循了 HTTP 规范,加上must-revalidate的...