Firefox (少なくとも v3) と Safari は、css ファイルから参照された画像を適切にキャッシュしないことがわかりました。画像はキャッシュされますが、サーバーで変更しても更新されません。Firefox がキャッシュに画像を保存すると、画像が変更されたかどうかを確認することはありません。
css ファイルは次のようになります。
div#news {
background: #FFFFFF url(images/newsitem_background.jpg) no-repeat;
...
}
問題は、ここで newsitem_background.jpg 画像を変更すると、明示的にページを更新しない限り、すべての Firefox ユーザーが古い画像を引き続き取得することです。一方、IE は画像が変更されたことを検出し、自動的に再読み込みします。
これは既知の問題ですか? 回避策はありますか?ありがとう!
編集: 解決策は F5 を押さないことです。私がすることができます。しかし、私たちのクライアントは、私たちの Web サイトにアクセスするだけで、古くて時代遅れのグラフィックを入手するだけです。F5 キーを押す必要があることをどのように知るのでしょうか?
Firebug をインストールして、すでに疑っていたことを確認しました。Firefox は、CSS ファイルから参照されている画像を取得して、変更されているかどうかを確認しようとさえしません。F5 を押すと、すべての画像がチェックされ、Web サーバーは適切に 304 で応答します。ただし、変更されたものを除き、200 OK で応答します。
では、 CSS ファイルから参照されている画像をFirefox に自動的に更新させる方法はありますか? きっと私だけがこの問題を抱えているのではありませんか?
EDIT2:これをローカルホストでテストしましたが、画像の応答にはキャッシュ情報が含まれていません。次のとおりです。
Server Microsoft-IIS/5.1
X-Powered-By ASP.NET
Date Tue, 14 Oct 2008 11:01:27 GMT
Content-Type image/jpeg
Accept-Ranges bytes
Last-Modified Tue, 14 Oct 2008 11:00:43 GMT
Etag "7ab3aa1aec2dc91:9f4"
Content-Length 61196
EDIT3:さらに読んだところ、修正できないように見えます。Firefoxまたはほとんどのブラウザは、画像が頻繁に変更されないと想定しているためです(ヘッダーとすべてが期限切れになります)。