当前位置: 首页 > 知识库问答 >
问题:

后端 - Cache-Control的缓存策略同时配置no-store和no-cache是什么意思?

吴正祥
2023-11-15
Cache-Control: no-store, no-cache, max-age=0, must-revalidate, proxy-revalidate

上面是mdn的一个例子,为什么no-store和no-cache同时出现,那不相当于no-store吗?

共有2个答案

鲁炳
2023-11-15

● 使用 no-cache 指令的目的是为了防止从缓存中返回过期的资源。“no-cache” 指令告诉浏览器和代理服务器不要缓存响应数据。这意味着缓存会将响应数据存储在缓存中,但在将响应返回给客户端之前,必须先将该响应提交给服务器进行验证。服务器会检查响应的有效性,如果发现响应仍然有效,服务器会返回一个新的验证令牌(ETag),以通知缓存可以使用它,否则服务器将返回新的响应数据。这种方式被称为“验证缓存”。

no-store
● “no-store” 指令更为严格,它要求浏览器和代理服务器不要在任何情况下缓存响应数据。这意味着每次请求都需要从原始服务器重新获取数据,不进行任何缓存。这可以用于敏感数据或者响应数据频繁更改的情况,以确保不会在客户端或代理服务器上存储敏感信息或者过期的数据

同时配置了no-cache和no-store,no-store的优先级要高,我没看具体是什么场景下什么例子,但是同时出现肯定是没问题的

廖夜洛
2023-11-15

Cache-Control: no-store, no-cache意味着浏览器和其他中间缓存设备不能使用缓存策略,每次都需要从服务器上获取内容。

no-store指示浏览器或其他中间缓存设备不能存储任何资源。这意味着即使在多次请求同一资源的情况下,浏览器也必须始终从服务器获取资源,而不是使用之前缓存的版本。

no-cache告诉浏览器和其他中间缓存设备在向服务器发送请求之前不要先检查缓存。如果缓存的内容已经过期,它仍然会使用过期的资源,除非同时设置了max-age=0,这告诉浏览器不要使用任何缓存,即使它在本地有缓存的资源也要始终从服务器获取。

因此,当同时设置no-storeno-cache时,浏览器和其他中间缓存设备不能使用任何形式的缓存策略。他们必须始终从服务器获取内容。这与只设置no-store的效果是一样的。

请注意,这并不意味着你不能设置多个指令。例如,如果你想禁止浏览器和中间缓存设备存储任何资源,但仍然允许它们使用已经过期的资源(只要这些资源没有过期),你可以设置Cache-Control: no-store, max-age=0。在这种情况下,浏览器和其他中间缓存设备将始终从服务器获取内容,但它们可以使用已经过期的资源,只要这些资源没有过期。

 类似资料:
  • 我正在使用: Spring 3.1.2.发布 Primefaces JSF 3.4.1 null 我没有什么想法了,有人知道是什么在我的响应中设置这些头,以便我可以针对适当的部署组件来解决这个问题吗?

  • 如果我正确解释了规范,将: null 这与相同吗?这会对性能有任何影响吗?还是只会浪费缓存中的空间,抵消缓存的好处? 目标是缓存需要登录的文件,以改善交付并减少带宽/服务器需求。这些文件不会改变,但确实需要经过身份验证的用户。

  • 来自RFC 2616 http://www.w3.org/protocols/rfc2616/rfc2616-sec14.html#sec14.9.1 与之相比 必须-重新验证 当缓存接收到的响应中存在必须重新验证指令时,该缓存在条目过期后不得使用该条目来响应后续请求,而不首先使用原始服务器重新验证该条目 特别是关于,用户代理实际上是这样根据经验对待这个指令的吗? 如果有和,有什么意义? 请参阅以

  • 问题内容: 使用Alpine映像创建Dockerfile时,我经常看到提交时使用和的用法,而是看到。 我很好奇,知道利用消除了以后再做的必要。我还想知道一种风格是否胜过另一种。 问题答案: 该选项允许不在本地缓存索引,这对于保持容器较小非常有用。 从字面上看,它在开头和结尾相等。 我们使用option的一些示例: 另一个不使用选项的示例: 如您所见,这两种情况都是有效的。对我来说,使用option

  • swoole框架目前支持5种Cache适配器,可以配置apps/configs/cache.php的type来设定不同类型的Cache Memcache 使用memcache缓存数据,配置示例: $cache['master'] = array( 'type' => 'Memcache', 'use_memcached' => true, //使用memcached扩展 '