Webサイトを更新したはずなのに、「デザインが変わっていない」「画像が古いまま」という経験はありませんか?
クライアントやユーザーから「直っていません」と連絡が来て焦った経験を持つ方も多いでしょう。
ブラウザは表示速度を上げるために一度読み込んだファイルを保存しており、ファイル名が変わらない限り、古いファイルを使い続けようとします。
この記事では、HTMLやCSS、画像ファイルを更新した際に、強制的にキャッシュをクリアさせて最新の状態を読み込ませる方法を解説します。
最も確実な「キャッシュバスター」の手法から、metaタグによる設定、サーバー側での制御まで、現在のWeb制作現場で使われているテクニックを網羅しました。
![]() 執筆者:マヒロ |
|
- OS:Windows 11 / macOS Sequoia
- IDE:Visual Studio / VS Code / IntelliJ IDEA
- その他:Chrome DevTools / 各言語最新安定版
※本メディアでは、上記環境にてコードの動作と情報の正確性を検証済みです。
【推奨】ファイル名にパラメータを付与する(キャッシュバスター)
最も確実で、Googleなどの大手サイトでも採用されている方法が、読み込むファイルのURL末尾に「クエリパラメータ(?v=…)」をつける手法です。
これを「キャッシュバスター」と呼びます。
ブラウザは「style.css」と「style.css?v=2」を別のファイルとして認識するため、強制的に新しいファイルをサーバーからダウンロードさせることができます。
CSSやJavaScriptファイルへの適用例
<!-- 更新前 -->
<link rel="stylesheet" href="style.css">
<script src="main.js"></script>
<!-- 更新後:末尾にパラメータを付与 -->
<link rel="stylesheet" href="style.css?ver=20260101">
<script src="main.js?v=2.0"></script>
?ver=20260101: ファイル名の後ろに?を付け、その後に任意の文字列を追加します。日付やバージョン番号にするのが一般的です。- ファイルを更新するたびに、この数値を変更します(例:
?v=1→?v=2)。 - ファイル名自体(
style.css)を変更する必要がないため、管理が楽です。
画像(imgタグ)への適用例
画像の差し替えを行ったのに反映されない場合も、同様の方法が有効です。
<img src="header-bg.jpg?2026-new" alt="ヘッダー画像">
画像ファイルの場合も、src属性の末尾にクエリパラメータを追加するだけで、ブラウザは「新しい画像」として認識し、再読み込みを行います。
【応用】PHPなどで更新日時を自動付与する
手動で毎回パラメータを書き換えるのは手間がかかりますし、修正漏れのリスクもあります。
PHPなどのサーバーサイド言語が使える環境であれば、ファイルの更新日時(タイムスタンプ)を自動的にパラメータとして付与するのがベストプラクティスです。
<!-- PHPでの実装例 -->
<link rel="stylesheet" href="style.css?v=<?php echo filemtime('style.css'); ?>">
filemtime('style.css')は指定したファイルの最終更新日時(Unixタイムスタンプ)を取得するPHP関数です。
これにより、HTMLが出力されると style.css?v=1767225600 のようになり、CSSファイルを上書き保存するたびに自動で数値が変わります。
手動での書き換え作業が一切不要になるため、WordPressなどのCMSテーマ開発では必須のテクニックです。
2. HTMLのmetaタグでキャッシュを無効化する
HTMLファイルの <head> 内に特定の meta タグを記述することで、ブラウザに対して「このページはキャッシュしないで」と指示する方法です。
ただし、この方法はあくまで「ブラウザへの要求」であり、プロキシサーバーや一部の環境では効かない場合がある点に注意が必要です。
キャッシュ無効化のmetaタグ記述
<head>
<!-- キャッシュを無効化する記述 -->
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">
</head>
Cache-Control: HTTP/1.1の標準規格です。no-cache(再検証を強制)、no-store(保存禁止)などを指定します。Pragma: 古いHTTP/1.0規格への互換性のために記述します。Expires: 有効期限を0(過去)に設定することで、即座に期限切れとみなさせます。
この設定を行うと、ブラウザの「戻る」ボタンを押した際にも再読み込みが発生したり、毎回すべてのデータをダウンロードするため表示速度が遅くなったりするデメリットがあります。
開発中や、頻繁に更新される動的なページ(マイページなど)でのみ使用し、通常の静的ページでは前述の「クエリパラメータ」による制御を推奨します。
3. サーバー設定(.htaccess)でキャッシュを制御する
Webサーバーの設定ファイル(.htaccess など)を使って、ファイルの種類ごとにキャッシュの挙動をコントロールする方法です。
HTML自体は常に最新を見せつつ、画像やCSSは一定期間キャッシュさせる、といった細やかな設定が可能です。
HTMLファイルのみキャッシュさせない設定例
Apacheサーバーでの .htaccess の記述例です。
<FilesMatch "\.(html|php)$">
Header set Cache-Control "no-cache, no-store, must-revalidate"
</FilesMatch>
<FilesMatch>: 設定を適用するファイルの拡張子を指定します。ここでは.htmlと.phpを対象にしています。Header set Cache-Control ...: サーバーからブラウザへ送るレスポンスヘッダに、キャッシュ無効化の指示を埋め込みます。metaタグよりも強力に作用します。
iframe内のページをキャッシュさせない方法
iframe で読み込んでいる外部HTMLが更新されない場合も、基本的な考え方は同じです。
src 属性のURLにパラメータを付与します。
<!-- iframeの読み込み先を強制更新 -->
<iframe src="content.html?v=2026" width="100%" height="500"></iframe>
JavaScriptを使って、アクセスするたびにランダムな数字(乱数)や現在時刻を付与して、常に新しいURLとして読み込ませる方法も有効です。
<script>
// 現在時刻(ミリ秒)をパラメータとして付与
const iframe = document.getElementById('myFrame');
iframe.src = 'content.html?t=' + new Date().getTime();
</script>
【開発者向け】ブラウザ操作で強制的にキャッシュをクリアする
コードを修正する前に、まずは自分自身のブラウザのキャッシュをクリアして確認したい場合、通常の「再読み込み(F5)」では不十分なことがあります。
以下の「スーパーリロード(強制再読み込み)」を試してください。
- Windows (Chrome / Edge):
Ctrl+F5またはShift+F5 - Mac (Chrome / Safari):
Command+Shift+R
これでも消えない場合は、開発者ツール(F12)を開き、更新ボタンを長押しして「キャッシュの消去とハード再読み込み」を選択するのが確実です。
HTML/CSSのスキルを活かして年収を上げる方法
以上、HTMLでキャッシュ更新を強制する方法について解説してきました。
| 年収アップにこだわりたい方 (平均アップ額138万円の実績) | テックゴー |
| 未経験・経験者問わず幅広く探したい方 | ユニゾンキャリア |
| 業界に精通した担当者に相談したい方 | キッカケエージェント |
| ゲーム業界への転職を志望する方 | ファミキャリ |
| エンジニア未経験からキャリアを築く方 | イーチキャリア |



