如何在 HTTP 请求中正确使用缓存控制标头

Posted

技术标签:

【中文标题】如何在 HTTP 请求中正确使用缓存控制标头【英文标题】:how to properly use cache-control header in an HTTP request 【发布时间】:2021-11-29 22:05:02 【问题描述】:

我有一个缓存数据的网站,它使用名为akamai 的内容交付网络,这是响应标头。 'cache-control': 'must-revalidate, max-age=600'。这意味着,在 600 秒(陈旧)后重新验证。如果我希望 CDN 查询每个请求的源服务器,我可以这样做...cache-control: no-cache。当我发送这个请求时,我得到相同的响应头......表明它没有被重新验证?它实际上没有被重新验证,还是被重新验证?由于该网站是众所周知的,因此可以肯定地说该网站正确响应了标题。

【问题讨论】:

【参考方案1】:

您观察到的是正确的行为。

您的Cache-Control 请求标头适用于此请求,而Cache-Control 响应适用于未来的请求。无论您的客户端是否想要对此请求的新响应,都不会也不应该改变服务器关于如何缓存其资源的一般方向。

只要您在请求中使用no-cache,您就不会得到缓存响应。

【讨论】:

以上是关于如何在 HTTP 请求中正确使用缓存控制标头的主要内容,如果未能解决你的问题,请参考以下文章

用户如何在浏览器请求上设置无缓存?

如何设置清漆缓存控制头

如何更改 Okhttp 中的默认缓存策略?

如何从控制器正确访问 HTTP 标头? (.NET 网络应用程序)

在播放结果上设置 HTTP 标头(如过期) - 以及如何处理 ETag?

如何使用控制缓存标头?