mod_mem_cache服务错误的内容!

我只是在运行定制应用程序的Apache2 / PHP5服务器上启用了mod_mem_cache ,并对结果感到震惊。 突然之间,错误的图像被服务,我注意到有一次HTML页面的请求提供了一个CSS页面! 什么可能导致这个? configuration如下:

 CacheEnable mem /
 MCacheSize 204800
 CacheDefaultExpire 360​​0
 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似乎完美!