ユーザーのブラウザに保存されているJavaScript、CSS、画像のキャッシュを削除するにはどうすればいいですか?

ユーザーのブラウザに保存されているJavaScript、CSS、画像のキャッシュを削除するにはどうすればいいですか?

ウェブサイトの開発やテスト公開時には、静的リソース(JavaScript、CSS、画像など)が頻繁に更新されるため、ブラウザのキャッシュにより古いファイルが表示されてしまう問題がよく起きます。 これを防ぐために「バージョン番号(キャッシュバスター)」をURLの末尾に付けて、ブラウザに「これは新しいファイルだ」と認識させ、必ず最新のリソースを読み込ませるのが一般的な対策です。

方法の例

HTMLや静的ファイルでのバージョン番号付与

<link rel="stylesheet" href="style.css?v=20230604">
<script src="script.js?v=20230604"></script>
<img src="image.jpg?v=20230604" alt="">

「?v=」の部分は任意で、「?ver=」「?version=」など何でも良い。日付やバージョン番号を変えることでブラウザが新しいファイルと認識。

JavaScriptを使い動的にタイムスタンプを付与(あまり推奨されない)

<script>
document.write('<link rel="stylesheet" href="style.css?v=' + new Date().getTime() + '">');
document.write('<script src="script.js?v=' + new Date().getTime() + '"><\/script>');
</script>

常に現在のタイムスタンプを使うため毎回違うURLになり、キャッシュを無効化できる。ただし、キャッシュ効果がほぼゼロになるためパフォーマンスは悪化。

WordPressでのバージョン番号設定

wp_enqueue_style('style', get_stylesheet_directory_uri() . '/style.css', array(), time());
wp_enqueue_script('js', get_stylesheet_directory_uri() . '/js/script.js', array(), time(), true);

time() を使うと毎秒バージョンが変わり、キャッシュ効果がほぼ無くなる。date('YmdH') のようにすれば1時間ごと、date('YmdHi')なら1分ごとにバージョンが変わり、バランスが取れる。

PHPでのバージョン番号付与

<link rel="stylesheet" href="style.css?ver=<?php echo date('YmdHi'); ?>">
<script src="script.js?ver=<?php echo date('YmdHi'); ?>"></script>
<img src="image.jpg?ver=<?php echo date('YmdHi'); ?>" alt="">

これにより、リソースは1分ごとに更新されるとみなされる。

コード解説

  • ウェブサイトの静的ファイル(JavaScript、CSS、画像など)はブラウザにキャッシュされるため、更新しても古いファイルが表示されることがあります。
  • これを防ぐため、ファイルのURLにバージョン番号や日時などのパラメータを付加して、ブラウザに「新しいファイル」と認識させる方法がよく使われます。
  • こうすることで、キャッシュを強制的に更新し、常に最新のリソースをユーザーに提供できます。
  • ただし、毎回異なるタイムスタンプを付けるとキャッシュが無効化され、ページの読み込み速度が遅くなる可能性があるため、更新頻度に合わせて適切に管理することが重要です。

まとめ

ブラウザのキャッシュを確実に更新するには、静的リソースURLにバージョン番号を付与する「キャッシュバスター」が最も簡単で効果的。毎回タイムスタンプを付ける方法は確実だが、キャッシュ効果が失われるため推奨されない。手動でバージョン番号を管理するか、PHPやCMSの仕組みを使い適切なタイミングでバージョンを更新するのがベスト。画像も同様にURLにパラメーターを付けてキャッシュ回避可能。

関連記事
ページ遷移の一般的な方法
本記事では、Webページにおけるページ遷移(リダイレクト)の一般的な実装方法について紹介しています。JavaScript、HTMLのメタタグ、PHP、ASPを用いたリダイレクト方法をそれぞれ具体的なコード例と共に解説しています。
Details
Details
9ヶ月前
ページ遷移の一般的な方法
PHPの hash_equals 関数とは?なぜ == や === を使わないのか?
hash_equals は PHP において、2つの文字列が等しいかを安全に比較するための関数です。特にパスワードのハッシュや署名の検証などで使われます。== や === といった通常の比較演算子とは異なり、タイミング攻撃(Timing A […]
解構人
解構人
7ヶ月前
PHPの hash_equals 関数とは?なぜ == や === を使わないのか?
IT業界の初心者が知っておくべきの用語(2025版)
新しいテクノロジーについて話すとき、時々自分がみんなのペースについていけないと感じることはありませんか?あるいは、その業界にいるのに、自分はまだ十分ではないと感じ、多くの専門用語を理解しなければならないこともあるでしょう。
Details
Details
8ヶ月前
IT業界の初心者が知っておくべきの用語(2025版)
scroll-behaviorで平滑スクロール、一行でいけるんだ
一般的に、アンカーリンクをスムーズにスクロールさせる時、JavaScriptやjQueryで実装することが多いです。例えば、 でも実は、CSSだけでもできるんです。そのためのプロパティがこちら: これを書くだけで、リンクをクリックした時にス […]
メモ・ノートスケ
メモ・ノートスケ
9ヶ月前
scroll-behaviorで平滑スクロール、一行でいけるんだ
JavaScriptでURL(パス)からファイル名を取得する
window.location.pathname でURLのパス部分を取得。 lastIndexOf('/') で最後のスラッシュ位置を検出。 substring でスラッシュの次から最後までを切り出し、ファイル名を抽出。
Details
Details
9ヶ月前
JavaScriptでURL(パス)からファイル名を取得する
PHPでランダムIDを生成するランダムな文字列を生成する
このPHPコードは、セキュリティ重視のWebシステムに必要な「予測不可能な」ランダムトークンを生成するために設計されています。openssl_random_pseudo_bytes() を使うことで、一般的な rand() や mt_rand() よりも格段に安全なランダム性が確保されます。
Details
Details
9ヶ月前
PHPでランダムIDを生成するランダムな文字列を生成する
CSSによる絶対中央寄せ
実用性が高い方法順で7種類の実装方法を紹介 最も推奨されるのは Flexbox と Grid transform を使う方法はどんな要素にも応用可能 line-height や table-cell は特定用途向け JavaScript による制御も紹介されている
Details
Details
9ヶ月前
CSSによる絶対中央寄せ
ABテストとは?赤か青か?データが導く最適な選択
ABテストは、今やデジタルマーケティングの「常識」となった科学的な意思決定手法です。日本のECサイトやアプリ開発の現場でも、「どちらのデザインが効果的か」「どんなキャッチコピーが響くか」を決める際に頻繁に活用されています。 この手法のルーツ […]
解構人
解構人
7ヶ月前
ABテストとは?赤か青か?データが導く最適な選択
【2025年最新版】WordPress制作者が実務で愛用するおすすめプラグイン10選【フォーム・SNS・セキュリティ・カスタマイズ】
目次 1. お問い合わせフォーム系プラグイン Contact Form 7 2. 柔軟なカスタムフィールドを追加できる定番プラグイン Advanced Custom Fields(ACF) 3. SNS連携・インスタ埋め込みプラグイン Sm […]
メモ・ノートスケ
メモ・ノートスケ
7ヶ月前
【2025年最新版】WordPress制作者が実務で愛用するおすすめプラグイン10選【フォーム・SNS・セキュリティ・カスタマイズ】
【WordPress対応】郵便番号から住所を自動入力!「Zipaddr-JP」プラグインの導入方法と使い方
目次 プラグイン「Zipaddr-JP」とは 「Zipaddr-JP」の特徴 プラグイン「Zipaddr-JP」の使い方 プラグイン「Zipaddr-JP」のインストール お問い合わせフォームとの連携 さいごに プラグイン「Zipaddr- […]
メモ・ノートスケ
メモ・ノートスケ
8ヶ月前
【WordPress対応】郵便番号から住所を自動入力!「Zipaddr-JP」プラグインの導入方法と使い方
【2025年6月最新版】TIOBEインデックスで見る人気プログラミング言語ランキングとは?
2025年6月最新版のTIOBEインデックスから、今人気のプログラミング言語を解説。Python、C、C++、Javaなどの注目度や、インデックスの活用方法も紹介します。
解構人
解構人
8ヶ月前
【2025年6月最新版】TIOBEインデックスで見る人気プログラミング言語ランキングとは?
JavaScriptでナビゲーション以外の場所をクリックしたらナビゲーションを閉じる
本コードは典型的なモバイル用サイドナビゲーションの実装例です。ボタンによる表示切替と、メニュー外クリック検知を組み合わせることで、ユーザー体験を向上させています。さらにESCキーでのメニュー閉鎖も可能にし、アクセシビリティも配慮しています。
Details
Details
9ヶ月前
JavaScriptでナビゲーション以外の場所をクリックしたらナビゲーションを閉じる
日本語用WebサイトのCSSフォント設定(日本語フォント/游ゴシック/游明朝)
日本語フォントはOSにより異なるため、複数のフォントを優先順に指定する。 "Yu Gothic"や"Yu Mincho"はモダンな日本語フォントでWindows 8.1以降に搭載。 "ヒラギノ角ゴ"や"ヒラギノ明朝"はmacOS向けで、高品質。 "メイリオ"や"MS 明朝"などは古いWindows環境にも対応。 ゴシック体はカジュアル・読みやすさ重視、明朝体はフォーマル・高級感重視に適している。
Details
Details
9ヶ月前
日本語用WebサイトのCSSフォント設定(日本語フォント/游ゴシック/游明朝)
フッターのJavaScriptは画像読み込みに影響する?ブラウザの読み込み順と最適化の基本
はじめに Webサイトの表示速度や操作感は、単にコンテンツの量や見た目だけでなく、ブラウザがリソースをどのように読み込むかによっても大きく左右されます。特にJavaScriptや画像の読み込み順序、そしてそれらがどのように相互作用しているか […]
解構人
解構人
8ヶ月前
フッターのJavaScriptは画像読み込みに影響する?ブラウザの読み込み順と最適化の基本
【WordPress】Openverseを完全に無効化・削除する方法|functions.phpと.htaccessで徹底対応
WordPressに標準搭載されているOpenverse(オープンソース画像検索)を完全に削除したい方へ。functions.phpでの無効化から、.htaccessによるAPI接続のブロックまで、技術者向けに詳しく解説します。
キウイフルーツ
キウイフルーツ
8ヶ月前
【WordPress】Openverseを完全に無効化・削除する方法|functions.phpと.htaccessで徹底対応