如何使用PHP清除缓存

时间:2011-10-06 11:54:31

标签: php caching cakephp

我正在尝试使用PHP清除浏览器缓存

这是我的代码

header("Cache-Control: no-cache, must-revalidate");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Content-Type: application/xml; charset=utf-8");

这段代码没有用,任何人都可以有想法。

提前致谢

4 个答案:

答案 0 :(得分:5)

您不能从服务器端清除缓存,只是指示浏览器不再进行缓存。

您使用的标头会起作用 - 它们会告诉浏览器不要缓存您刚刚发送的内容。但是,如果浏览器已经有页面的缓存版本,它将不会发送请求,也不会获取您正在设置的标头,因此它不会知道放弃缓存版本。

按CTRL + F5强制浏览器刷新内容。执行此操作后,您应该获得预期的行为。

答案 1 :(得分:2)

您无法使用PHP清除本地浏览器缓存。您只能清除用户在运行PHP脚本的网站上拥有的会话/ cookie。

答案 2 :(得分:1)

我们在制作中使用此功能,以防止用户通过按回浏览器(它位于AppController::beforeFilter())注销后能够查看经过身份验证的页面:

// disable local browser cache for authenticated pages (so user can't press back after logging out)
if ($this->Auth->user()) {
    $this->header("Cache-Control: no-cache, no-store, must-revalidate"); // 'no-store' is the key
    $this->header("Expires: Mon, 1 Jan 2001 00:00:00 GMT"); // date in the past
}

答案 3 :(得分:1)

请将此代码添加到您的php页面

<?php
header("Expires: Tue, 01 Jan 2000 00:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
?>