問題:動的サーバーから送信された画像を FireFox にキャッシュさせることができないようです
セットアップ:バックエンドで動的サーバー (mod_perl2) へのリバース プロキシを使用する静的 Apache サーバー。
サーバーのリクエスト 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ヘッダーでしょうか?