我在Apache(Debian)上使用APC缓存运行Magento Enterprise 1.9。
如果我浏览到我网站上不存在的网址,我会收到服务器的404响应,并按预期显示我的404网页。但是,如果我再次访问同一个网址 ,这次(以及随后的所有时间)我都会从服务器收到“200 OK”状态,尽管网址仍然无效且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”缓存版本(!)。
我该如何防止这种情况?
答案 0 :(得分:0)
这是Magento的整页缓存故障。
我发现Magento会检查是否存在名为NO_CACHE
的Cookie,所以我只是将$_COOKE["NO_CACHE"] = true;
放在404操作被调用之前(在我的情况下,/app/code/core/Mage/Cms/controllers/IndexController.php
)。
我还在404页面模板中添加了cache-control: no-cache, must revalidate
标题和上面相同的Cookie,以便进行衡量。