我在 Debian Wheezy 中使用 django 和 mod_wsgi 设置了 apache2。我用这个配置启用了 mod_mem_cache:
<IfModule mod_mem_cache.c>
CacheEnable mem /
MCacheSize 400000
MCacheMaxObjectCount 100
MCacheMinObjectSize 1
MCacheMaxObjectSize 500000
CacheIgnoreNoLastMod On
CacheIgnoreHeaders Set-Cookie
</IfModule>
基于 MCacheMaxStreamingBuffer 是文档中所述的 100000 或 MCacheMaxObjectSize 中较小的一个。
当我尝试点击大小为 3.3KB 的页面时,我在 firebug 中得到这些响应标头:
Connection Keep-Alive
Content-Encoding gzip
Content-Type text/html; charset=utf-8
Date Wed, 27 Aug 2014 14:47:39 GMT
Keep-Alive timeout=5, max=100
Server Apache/2.2.22 (Debian)
Transfer-Encoding chunked
Vary Cookie,Accept-Encoding
并且页面不是从缓存中提供的。然而,在页面源中有正确的标题“缓存控制:max-age=300,必须重新验证”,但没有出现在萤火虫中。在 apache 日志中,我只能正确看到:
[info] mem_cache: Cached url: https://83.212.**.**/?
对于我在 django 之外创建的另一个没有将分块编码作为标头的测试页面,缓存可以正常工作。为什么页面没有从缓存中提供?有没有人见过类似的东西?