不知何故,我无法让 Apache 的 mod-cache 按照我的意愿工作。我希望它缓存对我的 tomcat 服务器的代理调用,这是一个 jsp 文件。jsp 文件显示当前时间,这样我就可以注意到我是否获得了缓存的响应。这是我的配置:
CacheQuickHandler off
CacheLock on
CacheLockPath /tmp/mod_cache-lock
CacheLockMaxAge 5
CacheIgnoreHeaders Set-Cookie
<Location /Kanzan/>
CacheEnable disk
CacheHeader on
CacheDefaultExpire 800
CacheMaxExpire 64000
CacheIgnoreNoLastMod On
#ExpiresActive on
#ExpiresDefault A60
</Location>
ProxyPreserveHost On
ProxyPass /Kanzan/ http://127.0.0.1:8080/Kanzan/
ProxyPassReverse /Kanzan/ http://127.0.0.1:8080/Kanzan/
所有这些都在我的虚拟主机中。我确实在 5 个不同的文件中记录了这些内容,
cached-requests.log
cache.log
invalidated-requests.log
revalidated-requests.log
uncached-requests.log
但只有 cache.log 和最后两个文件会获取内容。在最后一个文件中,我总是获取到
127.0.0.1 [21/sep/2018xxxxx +0200] "GET /Kanzan/testCache.jsp HTTP/1.1" 200 472
在 cache.log 中我反复得到
cache miss: attempting entity save
我将数据保存到 /var/cache/apache2/mod_cache_disk,但由于时间在重新加载时不断更新,因此缓存从未使用过。
更新:
现在我意识到缓存是有效的……但是……它并没有按照我想要的方式工作。当我在浏览器上按刷新时,我希望返回服务器上的缓存值(如果尚未过期)。然而,每当我按刷新时,缓存都会更新!我该如何让它工作,以便当新用户需要此页面时缓存值不会更新??
答案1
只需添加
CacheIgnoreCacheControl on