Почему-то я не могу заставить 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 и 2 последних. В последнем файле я всегда получаю
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, но кеш никогда не используется, так как время продолжает обновляться при перезагрузке ..
ОБНОВИТЬ:
Теперь я понимаю, что кеш работает ... НО ... он работает не так, как я хочу. Когда я нажимаю «Обновить» в своем браузере, я хочу, чтобы кешированное значение на сервере было возвращено, если оно не истекло ... вместо этого, когда я нажимаю «Обновить», chache обновляется! Как сделать так, чтобы кешированное значение не обновлялось всякий раз, когда новому пользователю требуется эта страница?
Просто добавь это
CacheIgnoreCacheControl on