ブラウザキャッシュの仕組みを徹底解説|更新されない・古い表示になる原因とは?

ブラウザキャッシュが「更新しても反映されない」「古い表示のままになる」原因を解説。強キャッシュ・弱キャッシュ・ETag・Last-Modified の挙動をわかりやすく説明します。

目次

Webサイトを更新したのに「古いまま表示される」「反映されない」という相談は非常に多くあります。 その原因のほとんどが ブラウザキャッシュ の仕組みによるものです。

この記事では、強キャッシュ・弱キャッシュ・ETag・Last-Modified といった キャッシュの基本から、更新が反映されないときの原因、正しい対策までを中級者向けにやさしく解説します。

ブラウザキャッシュとは?

ブラウザキャッシュとは、Webページのデータ(HTML・CSS・JS・画像など)を 一時的に端末へ保存し、次回の読み込みを高速化する仕組みです。

キャッシュは主に以下のメリットを提供します:

しかしこの仕組みが裏目に出ると、 サイトを更新しても古いデータが残り続ける という現象が起こります。

キャッシュには「強キャッシュ」と「弱キャッシュ」がある

ブラウザキャッシュには、実はレベルが2種類あります。

① 強キャッシュ(期限が切れるまでサーバーに問い合わせない)

ブラウザが サーバーへアクセスすらしない キャッシュ方式。 「完全にキャッシュだけで表示」されるため、更新しても反映されないトラブルの主犯です。

強キャッシュが発動する条件:

たとえば max-age=31536000(1年)などを設定していると、 CSS や JS が1年間更新されない状態になります。

② 弱キャッシュ(サーバーに確認してから使う)

弱キャッシュは、保存されたキャッシュを使ってよいかどうかを サーバーに確認する方式です。

主に以下のヘッダーが使われます:

サーバーが「変更なし」と判断すると 304 Not Modified が返り、 キャッシュがそのまま使われます。

なぜ「更新しても反映されない」問題が起こるのか?

Web制作者がもっとも悩まされるのは次の現象です:

CSS や JS を更新しても、ブラウザが古いファイルを使い続ける。

原因① 強キャッシュが長く設定されている

特に静的ホスティング(CDN)では強キャッシュが長期間設定されることがあります。

原因② ファイル名が変わっていない

ブラウザは 「同じURLなら同じファイル」 と判断します。 同じ style.css を読み続けるのはこのためです。

原因③ バージョン付けがされていない

style.css?v=1.2 のようなバージョン管理がないと、キャッシュ破棄ができません。

キャッシュ更新を確実に反映させる方法

① ファイル名にバージョンを付ける(王道)

Text
style.css?v=20260202

Chrome も Safari も URLが異なれば必ず新ファイルを取りに行くため、 もっとも確実で安全。

② ファイル自体の名前を変える

Text
style.abc123.css

ビルドツール(Vite, Webpack)が行うハッシュ付けもこの方式。

③ Cache-Control を短くする

更新頻度が高いファイル(HTML・JSONなど)は:

Text
Cache-Control: no-cache

にするとサーバー確認が必ず行われます。

ブラウザごとのキャッシュ挙動の違い

Safari(iPhone)

Chrome(Android/PC)

Firefox

キャッシュ問題を避けるためのベストプラクティス

まとめ

キャッシュは便利ですが、仕組みを理解していないと 「変更が反映されない」という強烈な落とし穴になります。 この記事で基本を押さえて、キャッシュに悩まされない開発を目指しましょう。

ページを無料で公開する方法|GitHub Pagesだけでできる超初心者入門

Webページを無料で公開する最も簡単な方法「GitHub Pages」を初心者向けに解説。サーバー契約不要、料金ゼロ。作ったHTMLファイルをそのまま公開してスマホでも閲覧できます。

おじゃち

OJapp代表 WPプラグインPWAマーケティング・OnePage.OneApp.(1P1A)・ホーム画面名刺&SNSのPetal・その他OJappToolsなどを開発。PWA・ホーム画面・Safari挙動・軽量Web体験を中心に、実験しながらWebアプリを開発しています。

← 記事一覧へ戻る