我只是在运行定制应用程序的Apache2 / PHP5服务器上启用了mod_mem_cache ,并对结果感到震惊。 突然之间,错误的图像被服务,我注意到有一次HTML页面的请求提供了一个CSS页面! 什么可能导致这个? configuration如下:
CacheEnable mem / MCacheSize 204800 CacheDefaultExpire 3600 CacheIgnoreHeaders设置Cookie MCacheMinObjectSize 100 MCacheMaxObjectSize 5242880 MCacheRemovalAlgorithm LRU
在mod_cache和mod _ * _ cache内部,查找键是相当冗长的校验和,规范的URI和任何Vary:参数(用于协商内容)。 这些查找键会发生碰撞的可能性非常小,所以如果上述configuration得到不正确的响应,就像是一个错误。
我是caching模块的作者之一,如果您可以将请求的详细信息发送给我([email protected])和[email protected],或者提供一些有关详细信息的错误,我们可以使用重现 – http://httpd.apache.org/bug_report.html – 我们可以得到它。
或随意张贴在这里,我们将解决这个问题。
我发现了这个问题。 我正在使用mod_rewrite来重新链接到一个PHP脚本不存在的文件的URL,这些脚本将这些URL分发到适当的模块。 由于所有这些虚拟URL被重写到相同的URL,mod_cache变得困惑。 为了解决这个问题,我改变了我的Apacheconfiguration的以下部分:
RewriteCond %{REQUEST_FILENAME} !-f RewriteRule .* /dispatch.php
至:
RewriteCond %{REQUEST_FILENAME} !-f RewriteRule (.*) /dispatch.php/$1
现在caching似乎完美!