Я борюсь с этим некоторое время, но я не могу понять, почему запрос не кэшируется.
Заголовки ответа:
HTTP/1.1 200 OK
Date: Tue, 20 Aug 2013 16:42:12 GMT
Server: Apache/2.2.23 (Unix) mod_ssl/2.2.23 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 mod_perl/2.0.6 Perl/v5.8.8
Expires: Tue, 20 Aug 2013 22:32:41 GMT
Pragma: public
Cache-Control: max-age=21029, public, must-revalidate, proxy-revalidate
X-Powered-By: W3 Total Cache/0.9.3
Vary:
Last-Modified: Tue, 20 Aug 2013 16:32:41 GMT
Content-Type: text/html; charset=UTF-8
X-Cache: MISS from proxy
X-Cache-Lookup: MISS from proxy:3128
Transfer-Encoding: chunked
Via: 1.1 proxy (squid/3.2.13)
Connection: keep-alive
Ключевые поля, на которые я смотрю: Date, Expires, Pragma, Cache-Control, X-Cache и X-Cache-Lookup.
Это говорит мне: «Эй, пожалуйста, закешируйте это», но squid просто говорит «MISS» при повторных запросах.
Соответствующий шаблон refresh_pattern:
refresh_pattern . 0 20% 4320 reload-into-ims
Что мне не хватает?
У Squid была ошибка, из-за которой запросы с заголовком Vary не кешировались - этот вопрос есть подробное описание проблемы с дополнительной информацией, но вот ее краткая версия:
Проанализировав журналы, я смог определить, что ключ поиска хэша, используемый во время хранения (то есть начальный запрос), отличается от того, который использовался во время последующих запросов. Вот почему последующие поиски - это промахи кеша.
На данный момент ошибка исправлена.