我刚刚mod_mem_cache
在运行自定义应用程序的 Apache2/PHP5 服务器上启用,结果吓坏了。突然之间提供了错误的图像,我注意到有一次对 HTML 页面的请求提供了一个 CSS 页面!这可能是什么原因造成的?配置如下:
CacheEnable 内存 / MCacheSize 204800 缓存默认过期 3600 CacheIgnoreHeaders Set-Cookie MCacheMinObjectSize 100 MCacheMaxObjectSize 5242880 MCacheRemovalAlgorithm LRU
在 mod_cache 和 mod_*_cache 内部,查找键是规范 URI 和任何 Vary: 参数(用于协商内容)的相当长的校验和。这些查找键不太可能发生冲突,因此如果您对上述配置得到不正确的响应,这似乎是一个错误。
我是缓存模块的作者之一,如果您可以将请求的详细信息邮寄给我 ([email protected]) 和 [email protected],或者提交包含我们可以使用的一些详细信息的错误重现 - http://httpd.apache.org/bug_report.html - 我们可以得到它。
或者随时在此处发布它们,我们将解决问题。
我发现了问题。我正在使用 mod_rewrite 将 URL 重新写入到 PHP 脚本中不存在的文件,该脚本会将这些 URL 分派到正确的模块。因为所有这些虚拟 URL 都被重写为同一个 URL,所以 mod_cache 变得混乱。为了解决这个问题,我更改了 Apache 配置的以下部分:
至:
现在缓存似乎工作得很好!