防止 Apache 提供带有 304 状态码的页面

prevent Apache from serving pages with 304 status code

我有一个服务器,LAMP,设置和一个 CakePHP 应用程序。当我通过任何 Web 浏览器请求网页时,它总是以 304 状态回复,即使在我更改了页面后仍提供旧页面。似乎服务器将任何以前访问过的页面保存在缓存中,并将其返回给之后请求它的任何人。例如:用户 "X" 登录此系统并访问页面 "home" 并注销。当另一个用户 "Y" 登录系统时,他将看到 "X" 的 "home",而他应该访问他的主页并显示他的名字。相反,他认为它是因为 X 之前访问过它。当我完全删除资源时,比如 "home" 页面,它仍然可以访问。我已经检查过,页面提供了 304 not modified 状态码;但是我未能在我的 apache 设置中修改此行为;我是新手,没有解决方案。如有任何帮助,我们将不胜感激。

万一其他人有同样的问题,我会回复我自己的问题。我发现了这种行为的潜在原因。我的 apache 设置很好,但我的 lan 有一个 Apache Traffic Server,它缓存了一些资源,默认情况下缓存了图像和 css 文件之类的东西。如果对文件进行了修改,建议将其重命名,以便不提供旧文件。对于网页,我通过添加以下内容强制其非缓存:

<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="cache-control" content="no-store" />
<meta http-equiv="cache-control" content="must-revalidate" />
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="expires" content="0" />

由于我使用的是 cakePHP,我还在 AppController 文件 (asked here) 的 beforeFilter 方法中添加了以下行:

function beforeFilter() {

    /**
     * 
     */

    header('Cache-Control: no-cache, no-store, must-revalidate');
    header('Pragma: no-cache');
    header('Expires: 0');

}

希望对大家有所帮助。