Проблема: мне не удается заставить FireFox кэшировать изображения, отправленные с динамического сервера.
Установка: статический сервер Apache с обратным прокси-сервером на динамический сервер (mod_perl2) в бэкенде.
Вот URL-адрес запроса для сервера. Он отправляется на динамический сервер, где cookie используется для проверки доступа к изображению:
Заголовки запроса
Host: <OBSCURED>
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.15) Gecko/2009102815 Ubuntu/9.04 (jaunty) Firefox/3.0.15
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: <OBSCURED>
Cookie: pz_cred=4KCNr0RM15%2FJCOt%2BEa6%2BL62z%2Fxvbp2xNQHY5pJw5d6Q
Pragma: no-cache
Cache-Control: no-cache
Динамический сервер передает изображение обратно на сервер и предоставляет следующий ответ:
Заголовки ответа
Date: Tue, 24 Nov 2009 04:28:07 GMT
Server: Apache/2.2.11 (Ubuntu) mod_apreq2-20051231/2.6.0 mod_perl/2.0.4 Perl/v5.10.0
Cache-Control: public, max-age=31536000
Content-Length: 25496
Content-Type: image/jpeg
Via: 1.1 127.0.1.1:8081
Keep-Alive: timeout=15, max=75
Connection: Keep-Alive
Пока все хорошо (мне кажется). Однако при перезагрузке страницы изображение не отображается в кэше, и снова отправляется запрос:
Заголовки запроса
Host: <OBSCURED>
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.15) Gecko/2009102815 Ubuntu/9.04 (jaunty) Firefox/3.0.15
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: <OBSCURED>
Cookie: pz_cred=4KCNr0RM15%2FJCOt%2BEa6%2BL62z%2Fxvbp2xNQHY5pJw5d6Q
Cache-Control: max-age=0
Кажется, что запрос не должен происходить, поскольку браузер должен был кэшировать изображение. Как бы то ни было, получен ответ 200, такой же, как и первый, и изображение, похоже, повторно загружено (хотя браузер, похоже, использует кэшированные изображения).
На проблему намекает Cache-Control: max-age=0 в заголовке запроса на перезагрузку выше.
Кто-нибудь знает, почему это происходит? Возможно, причиной проблемы является заголовок Via в ответе?