问题:我似乎无法让 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标头导致了问题?