有没有办法禁用单个页面的浏览器缓存?

时间:2009-09-25 20:14:15

标签: php apache caching xampp

对于小型Intranet站点,我有一个动态(包括AJAX)页面,Firefox正在被错误地缓存。有没有办法禁用单个页面的浏览器缓存?

这是我正在使用的设置:

  • XAMPP下的Apache,在Windows服务器上运行
  • PHP

澄清

我主要关注的内容是页面文本和某些<select>中的默认选项。因此,我不能仅将随机数添加到某些图像网址的末尾,例如。

更新

我遵循了迄今为止的建议:

  • 我正在发送nocache标头(见下文)
  • 如果页面在2秒后重新加载,我将包含一个时间戳URL参数并重定向到新参数,如下所示:

    $timestamp = $_GET['timestamp'];
    if ((time()-$timestamp) > 2) {
        header('Location:/intranet/admin/manage_skus.php?timestamp='.time());
    }
    

现在,Firebug显示标头没有指定缓存,但问题仍然存在。以下是该页面的响应标题:

Date    Fri, 25 Sep 2009 20:41:43 GMT
Server  Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i mod_autoindex_color PHP/5.2.8
X-Powered-By    PHP/5.2.8
Expires Mon, 20 Dec 1998 01:00:00 GMT
Last-Modified   Fri, 25 Sep 2009 20:41:43 GMT
Cache-Control   no-cache, must-revalidate
Pragma  no-cache
Keep-Alive  timeout=5, max=100
Connection  Keep-Alive
Transfer-Encoding   chunked
Content-Type    text/html

6 个答案:

答案 0 :(得分:9)

将当前时间戳添加为url的参数,例如

http://server.com/index.php?timestamp=125656789

答案 1 :(得分:4)

我认为这会告诉你你想要什么:

http://www.thesitewizard.com/archive/phptutorial2.shtml

寻找“防止浏览器缓存”

header( "Expires: Mon, 20 Dec 1998 01:00:00 GMT" );
header( "Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT" );
header( "Cache-Control: no-cache, must-revalidate" );
header( "Pragma: no-cache" );

答案 2 :(得分:3)

您应该发送以下标题:

Cache-control: no-cache
HTTP响应中的

答案 3 :(得分:1)

您可以添加以下标题:

Cache-Control: no-cache

(为了与HTTP / 1.0客户端向后兼容)

Pragma: no-cache

答案 4 :(得分:1)

这是另一个不是特定于PHP的内容。

<head> </head>部分中尝试此操作:

<meta http-equiv="cache-control" content="no-cache, no store"/>
<meta http-equiv="Expires" Content="Mon, 25 May 2009 19:07:03 GMT">

在这里的长线程结束时发现:

http://forums.mozillazine.org/viewtopic.php?f=25&t=673135&start=75

答案 5 :(得分:0)

使用header()函数。您必须设置一些以涵盖所有浏览器;见http://www.php.net/manual/en/function.header.php#75507