如何完全禁用缓存

4

可能是重复问题:
缓存控制失败

我目前正在使用:

header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

并且

<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="-1">
<meta http-equiv="pragma" content="no-cache">

但它仍然会缓存


你使用的是哪个浏览器? - Eric Petroelje
4
你想要永久地禁用所有用户的缓存吗?还是只针对开发进行禁用? - Ron van der Heijden
但是浏览器确实会发送“如果修改自”请求,不是吗? - Šime Vidas
1
这里又出现了我们的好朋友Chrome https://dev59.com/61bUa4cB1Zd3GeqPDPDl - Ron van der Heijden
3
亲爱的 Stack Overflow,当您将某个问题标记为重复时,是否可以提供原始问题链接? - Tharaka Nuwan
显示剩余2条评论
3个回答

5

您还可以添加Pragma: no-cache。并确保Last-Modified在过去足够长的时间内:一些小的时钟偏差可能会让客户端认为它拥有文档的新鲜版本;例如使用Tue, 15 Nov 1994 12:45:26 GMT。同时,添加一个Expires标题,使其日期为过去。


1

我通常在我的 .htaccess 文件中添加这个

<filesMatch "\.(js|css)$">
FileETag None
<ifModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</ifModule>
</filesMatch>

修改fileMatch以添加其他扩展名...


0
将时间戳添加到每个URI的末尾,浏览器就不会从缓存中检索它(因为在下一次加载时它将与另一个URI一起)。

2
如果你不使用 AJAX,那这是一个丑陋的解决方案。 - Licson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接