「サイトを更新したのに古い画面が表示される」「キャッシュってどのくらい残り続けるの?」と気になったことはないでしょうか。
キャッシュの保存期間は、数秒から最長1年以上まで幅があります。
この記事では、キャッシュが残る期間の仕組みや、どうやって有効期限が決まるのかをわかりやすく解説します。
キャッシュの有効期限とは
キャッシュとは、一度アクセスしたWebサイトの画像・HTML・CSSなどのファイルを、ブラウザがパソコンやスマートフォンに一時的に保存したデータのことです。
次回同じサイトを開くとき、保存済みのデータを使うことで読み込みが速くなります。
ただし、キャッシュはいつまでも使い続けるわけではありません。
各ファイルには「TTL(Time to Live)」と呼ばれる有効期限が設定されており、期限が切れると古いキャッシュは削除または再取得されます。
キャッシュが残る期間の目安
キャッシュが残る期間は、キャッシュの種類やサーバーの設定によって大きく異なります。
以下に主な目安をまとめます。
| キャッシュの種類 | 一般的な残存期間 | 備考 |
|---|---|---|
| ブラウザキャッシュ(画像・CSS等) | 数分〜1年 | サーバー側の設定による |
| 静的アセット(ロゴ・フォント等) | 30日〜1年 | Googleは最低1週間を推奨 |
| 動的コンテンツ(ニュース等) | 数分〜数時間 | 頻繁に更新されるため短め |
| ヒューリスティックキャッシュ(設定なし) | (最終更新からの経過日数)×0.1 | 自動計算される |
キャッシュの期間を決める仕組み
Cache-Control ヘッダー
キャッシュの有効期限は、サーバーが返すHTTPレスポンスの中にある「Cache-Control」ヘッダーで指定されます。
ここに max-age=86400(秒数)のように書くと、ブラウザは指定された秒数だけキャッシュを保持します。
Cache-Control: max-age=86400 → 24時間キャッシュを保持
Cache-Control: max-age=31536000 → 1年キャッシュを保持
Cache-Control: no-store → キャッシュしない
Googleは以下の期間を推奨しています。
- 静的アセット(ロゴ・フォント・画像など):最低1週間、理想は最大1年
- 頻繁に更新されるコンテンツ:短いmax-ageまたはno-cacheを設定
Expires ヘッダー
Expires は有効期限を日時で指定する古い方式です。
現在は Cache-Control の max-age が優先されることが多く、両方ある場合は Cache-Control が使われます。
ヒューリスティックキャッシュ(設定なしの場合)
Cache-Control や Expires が設定されていない場合でも、ブラウザは自動的にキャッシュ期間を計算します。
これを「ヒューリスティックキャッシュ」と呼びます。
計算式は以下のとおりです。
(リクエスト日時 − ファイルの最終更新日時)× 0.1 = キャッシュ保持期間
たとえば、ファイルの最終更新から35日が経過している場合、キャッシュは約3.5日間保持されます。
更新から時間が経つほど、キャッシュも長く保持されやすくなる仕組みです。
ETag による再検証
ETag は、ファイルのバージョンを示す識別子です。
キャッシュの有効期限が切れた後、ブラウザはサーバーに「ファイルが変わっていないか」を確認(再検証)します。
ファイルに変更がなければ 304 Not Modified が返され、キャッシュがそのまま使われます。
これにより、不要なデータの再ダウンロードを避けられます。
キャッシュが自動的に消えるケース
手動で削除しなくても、キャッシュが自動的に消えるケースは以下のとおりです。
- TTLの期限切れ:設定した有効期限(max-age)が過ぎた場合
- ストレージ容量の上限:ブラウザが確保しているキャッシュ領域がいっぱいになると、古いものから削除される
- ファイルの更新検知:ETagやLast-Modifiedの照合でファイルが更新されたと判断された場合
逆に言えば、TTLが長く・容量に余裕があり・ファイルが更新されていなければ、数ヶ月以上キャッシュが残り続けることもあります。
キャッシュを手動で削除・更新する方法
サイトの表示がおかしいときや、最新の内容を確認したいときは手動での対処が有効です。
通常のリロード(F5・更新ボタン)は、キャッシュを使ったまま再読み込みするため、古い表示が残る場合があります。
スーパーリロード(強制再読み込み)を行うと、キャッシュを無視してサーバーから最新のファイルを取得できます。
| ブラウザ | スーパーリロードのショートカット |
|---|---|
| Chrome(Windows) | Ctrl + Shift + R または Ctrl + F5 |
| Chrome(Mac) | Command + Shift + R |
| Firefox(Windows) | Ctrl + Shift + R |
| Edge(Windows) | Ctrl + Shift + R |
スーパーリロードでも解決しない場合は、ブラウザの設定からキャッシュを全削除してください。
Chromeの場合は「設定」→「プライバシーとセキュリティ」→「閲覧履歴データの削除」→「キャッシュされた画像とファイル」にチェックを入れて削除します。
まとめ
キャッシュが残る期間は、サーバー側のHTTPヘッダー設定(Cache-Control)によって決まります。
一般的なWebコンテンツでは1日〜90日程度、静的アセットは最大1年残ることもあります。
TTLが設定されていない場合は、ヒューリスティックキャッシュとして自動計算された期間だけ保持されます。
表示の乱れや更新の反映漏れが起きたときは、まずスーパーリロードを試してみましょう。
キャッシュの仕組みについてより詳しく知りたい方は、ブラウザキャッシュの仕組みと削除方法もあわせてご覧ください。
参考情報源:


コメント