0

我在 Apache (Debian) 上运行带有 APC 缓存的 Magento Enterprise 1.9。

如果我浏览到我网站上不存在的 URL,我会收到来自服务器的 404 响应,并按预期显示我的 404 页面。但是,如果我再次访问相同的 URL ,这一次(以及所有后续时间)我会从服务器收到“200 OK”状态,尽管 URL 仍然无效并且仍然显示 404 页面。

例子:

$ curl -I http://www.example.com/some-nonexistent-URL
$ HTTP/1.1 404 Not Found

$ curl -I http://www.example.com/some-nonexistent-URL
$ HTTP/1.1 200 OK

假设这是因为对该 URL 的响应以某种方式被缓存,因此服务器发送了 404 页面的“200 OK”缓存版本(!)。

我怎样才能防止这种情况?

4

1 回答 1

0

这是 Magento 的全页缓存故障。

我发现 Magento 会检查是否存在名为 的 cookie NO_CACHE,所以我只是$_COOKE["NO_CACHE"] = true;在调用 404 操作之前放置了点(在我的情况下是/app/code/core/Mage/Cms/controllers/IndexController.php)。

我还在cache-control: no-cache, must revalidate404 页面模板本身中添加了一个标题和与上面相同的 cookie,以进行良好的衡量。

于 2013-03-21T01:11:30.390 回答