避免缓存的HTTP标头:哪些Cache-Control标志,哪个pragma值以及其他功能?

时间:2018-12-05 13:54:12

标签: http caching no-cache http-head

在寻求绝对,肯定,最肯定地完全禁用尽可能多的浏览器/服务器/情况的缓存时,我发现了许多关于HTTP标头的矛盾答案和建议使用。

请注意,我在这里谈论的是服务器方面,即我应该从服务器发送哪些HTTP标头,以避免任何来访的浏览器将我的数据缓存并完全重新获取每个请求。

首先,有Cache-Control标头。我发现以下参数的不同组合:

Cache-Control: no-cache, no-store, must-revalidate, post-check=0, pre-check=0, max-age=0

哪个是正确的?哪个有用?哪个是假的?我需要更多吗?

然后,特别是在PHP中,有些人倾向于添加以下内容:
header("Cache-Control: private",false);

false参数是为了避免替换任何较早的Cache-Control标头,因此有效的做法是添加第二个HTTP标头,如下所示:
Cache-Control: private
有什么用吗?

然后是Expires标头,通常最好将其设置为0:
Expires: 0
有道理。

最后有一个Pragma标头,在这里我也看到了相互矛盾的建议。
有人说:Pragma: no-cache
其他人建议:Pragma: public

哪个更好?

我还忘记了什么?

0 个答案:

没有答案