mod_mem_cache 提供错误的内容!

mod_mem_cache 提供错误的内容!

我刚刚mod_mem_cache在运行自定义应用程序的 Apache2/PHP5 服务器上启用了此功能,结果让我大吃一惊。突然间,错误的图像被提供,我注意到有一次对 HTML 页面的请求反而提供了一个 CSS 页面!这可能是什么原因造成的?配置如下:

CacheEnable 内存 /
缓存大小 204800
CacheDefaultExpire 360​​0
CacheIgnoreHeaders 设置 Cookie
MCacheMinObjectSize 100
MCacheMaxObjectSize 5242880
MCacheRemovalAlgorithm LRU

答案1

在 mod_cache 和 mod_*_cache 内部,查找键是相当长的校验和,包括规范 URI 和任何 Vary: 参数(用于协商内容)。这些查找键发生冲突的可能性极小,因此如果您收到上述配置的错误响应,则似乎是错误。

我是缓存模块的作者之一,如果你能将请求的详细信息邮寄给我([电子邮件保护]) 和[电子邮件保护]或者提交错误报告并提供一些我们可以用来重现的细节 -http://httpd.apache.org/bug_report.html- 我们可以上去。

或者欢迎将它们发布在这里,我们会解决该问题。

答案2

我找到了问题所在。我使用 mod_rewrite 将不存在的文件 URL 重写为 PHP 脚本,该脚本会将这些 URL 分发给正确的模块。由于所有这些虚拟 URL 都被重写为同一个 URL,因此 mod_cache 会感到困惑。为了解决这个问题,我更改了 Apache 配置的以下部分:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* /dispatch.php

到:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) /dispatch.php/$1

现在缓存似乎运行完美!

相关内容