ブラウザはファビコンをどうキャッシュするか
ブラウザはファビコンを積極的にキャッシュし、ページ自身のキャッシュとは別に保存するため、通常の再読み込みとは関係なく何日もアイコンを保持することがよくあります。だからこそ、変更したファビコンがしばしば古い画像を表示し続けるのです。確実に更新させる方法は、アイコンの URL を変えること(通常は /favicon.ico?v=2 のようなバージョンのクエリ文字列)とハードリフレッシュです。
なぜファビコンはこれほど粘着的なのか
ファビコンは特別扱いされます。ブラウザはそれを通常の HTTP キャッシュとは別のストアに保持し、長い有効期間で持ち、普通の再読み込みでは必ずしも破棄しません。中にはセッションをまたいで残るプロファイル単位のファビコンデータベースを持つものもあります。サイトの前段に CDN があれば、その上にさらにもう一段のキャッシュが乗ります。
結果として、アイコンファイルをその場で編集しても見えないことがよくあります。ブラウザはすでにその URL のアイコンを持っており、再度尋ねる理由が無いのです。キーは URL なので、対策はバイト列を変えることではなく URL を変えることです。
新しいファビコンを強制する
- 1
URL を変える
バージョンのクエリ文字列(/favicon.ico?v=2)を付けて、ブラウザが新しいリソースとして扱い取得するようにします。変更のたびに番号を上げましょう。
- 2
ハードリフレッシュするか、プライベートウィンドウを使う
Cmd+Shift+R / Ctrl+F5、または新しいプライベートウィンドウは、ブラウザが保存したコピーを回避します。
- 3
CDN があればパージする
サイトの前段に CDN があれば、ファビコンのパスを無効化して、ブラウザが見る前にエッジノードが古いファイルを配信するのを止めます。
ファビコンのキャッシュに関するよくある質問
なぜファビコンが更新されないのですか?
ブラウザが別のファビコンストアからキャッシュしたコピーを配信しているか、CDN が古いファイルを渡しています。バージョンのクエリ文字列でアイコンの URL を変え、プライベートウィンドウでハードリフレッシュしてください。
ファビコンのキャッシュを削除するには?
アイコンごとの確実なクリアボタンは無いので、代わりに URL を変えましょう(/favicon.ico?v=2)。これでキャッシュを完全に回避できます。それでもだめなら、プライベートウィンドウか別のブラウザプロファイルには保存済みのアイコンがありません。
ファビコンのキャッシュはブラウザによって違いますか?
はい。各ブラウザ、そしてしばしば各プロファイルが、独自の有効期間を持つ独自のファビコンストアを保持します。だからこそ、あるブラウザでは更新されて見え、同時に別のブラウザでは古いまま、ということが起きます。