缓存控制不起作用

时间:2010-11-12 01:56:39

标签: php header http-headers

我已经jusy完成了一个登录脚本,并注意到即使我退出后我可以返回并再次查看受保护的页面。这确实不是问题,因为用户不会造成任何损害,但我确实收到了大量我不喜欢的javascript错误。如果可能的话,我希望能够完全阻止客户端缓存。

我已经尝试了以下但是它无法正常工作,因为我仍然可以返回并查看缓存副本。这是我到目前为止所使用的。

    header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
    header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past

2 个答案:

答案 0 :(得分:5)

你有没有尝试过更全面的东西?

Expires: Sat, 26 Jul 1997 05:00:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache

来源:http://www.php.net/manual/en/function.session-cache-limiter.php

答案 1 :(得分:0)

我不确定这是否适用于整个页面,但值得一试。

我们一遍又一遍地提供具有完全相同文件名的动态图像。显然,缓存这些图像会是坏的,坏的,坏的(并且完全破坏了我们的应用程序)。

因此,我们将这三个标题发送到浏览器,并且它已经非常有效地完全消除了所有浏览器上所有图像的缓存:

//Prevent the image from caching, so it is created fresh each time.
app.Response.AddHeader("pragma", "no-store,no-cache"); // //HTTP 1.0
app.Response.AddHeader("cache-control", "no-cache, no-store, must-revalidate, max-age=-1"); // HTTP 1.1
app.Response.AddHeader("expires", "Mon, 14 Jul 1789 12:30:00 GMT"); // Date in the past

注意:我们测试了很多变化,但这些是防止客户端图像缓存的神奇配方中的三个基本要素。您可能已经成功将这些用于整个页面,但我还没有测试过该特定情况。