ユーザーのブラウザに保存されている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にパラメーターを付けてキャッシュ回避可能。

関連記事
!important なしでも大丈夫!CSS @layer でスタイル管理をもっと簡単に
CSS の !important は便利ですが、乱用すると保守が難しくなります。そこで注目されているのが新機能 @layer。この記事では、@layer を使って優先度を整理する方法を実装例とともに紹介します。
Details
Details
1ヶ月前
!important なしでも大丈夫!CSS @layer でスタイル管理をもっと簡単に
JavaScriptでナビゲーション以外の場所をクリックしたらナビゲーションを閉じる
本コードは典型的なモバイル用サイドナビゲーションの実装例です。ボタンによる表示切替と、メニュー外クリック検知を組み合わせることで、ユーザー体験を向上させています。さらにESCキーでのメニュー閉鎖も可能にし、アクセシビリティも配慮しています。
Details
Details
2ヶ月前
JavaScriptでナビゲーション以外の場所をクリックしたらナビゲーションを閉じる
ABテストとは?赤か青か?データが導く最適な選択
ABテストは、今やデジタルマーケティングの「常識」となった科学的な意思決定手法です。日本のECサイトやアプリ開発の現場でも、「どちらのデザインが効果的か」「どんなキャッチコピーが響くか」を決める際に頻繁に活用されています。 この手法のルーツ […]
解構人
解構人
1ヶ月前
ABテストとは?赤か青か?データが導く最適な選択
画像の遅延読み込みはこう変わる!2025年最新版・Lazy LoadとIntersectionObserverの最適解
2025年最新の画像遅延読み込み(Lazy Load)完全ガイド。ネイティブloading="lazy"とIntersectionObserverの使い分け・実装例・SEOやLCPへの最新対応ポイントまで徹底解説。パフォーマンスと検索順位アップのための必読ノウハウ!
aki0o0
aki0o0
3ヶ月前
画像の遅延読み込みはこう変わる!2025年最新版・Lazy LoadとIntersectionObserverの最適解
CSSによる絶対中央寄せ
実用性が高い方法順で7種類の実装方法を紹介 最も推奨されるのは Flexbox と Grid transform を使う方法はどんな要素にも応用可能 line-height や table-cell は特定用途向け JavaScript による制御も紹介されている
Details
Details
2ヶ月前
CSSによる絶対中央寄せ
PHPのcheckdnsrr関数徹底解説:メールアドレス検証での活用方法
目次 フォーム開発で遭遇した課題 checkdnsrr関数とは? 主な用途 メールアドレスのドメイン検証 ドメイン存在確認 SPFレコードチェック ネットワーク診断ツール メリット デメリットと制限事項 実際の活用例 基本的なメールドメイン […]
解構人
解構人
1ヶ月前
PHPのcheckdnsrr関数徹底解説:メールアドレス検証での活用方法
【2025年6月最新版】TIOBEインデックスで見る人気プログラミング言語ランキングとは?
2025年6月最新版のTIOBEインデックスから、今人気のプログラミング言語を解説。Python、C、C++、Javaなどの注目度や、インデックスの活用方法も紹介します。
解構人
解構人
2ヶ月前
【2025年6月最新版】TIOBEインデックスで見る人気プログラミング言語ランキングとは?
PHPの hash_equals 関数とは?なぜ == や === を使わないのか?
hash_equals は PHP において、2つの文字列が等しいかを安全に比較するための関数です。特にパスワードのハッシュや署名の検証などで使われます。== や === といった通常の比較演算子とは異なり、タイミング攻撃(Timing A […]
解構人
解構人
25日前
PHPの hash_equals 関数とは?なぜ == や === を使わないのか?
Facebookがウェブページを開いたときに自動でFacebookアプリを起動し、指定したユーザーのページを開く方法
このチュートリアルでは、ウェブページからFacebookアプリを自動または手動で起動し、指定したFacebookページを開く方法を紹介しています。ページIDの取得方法、iPhoneとAndroidで異なるリダイレクト方法、リンクによる手動遷移の実装例を説明し、最後にクライアント判別を含むサンプルパッケージも提供しています。Facebook誘導やモバイルUX改善を目指す方におすすめです。
Details
Details
3ヶ月前
Facebookがウェブページを開いたときに自動でFacebookアプリを起動し、指定したユーザーのページを開く方法
【CSSテクニック】:not()セレクタで階層を跨いだ除外を実現
:not()疑似クラスはCSSでの除外指定に便利ですが、親要素や階層関係に対しては思わぬ制約があります。本記事では、WordPressの投稿構造を例に、インラインコードとコードブロックを正確に区別するためのセレクタ設計を解説します。
無敵の小さな蚊
無敵の小さな蚊
2ヶ月前
【CSSテクニック】:not()セレクタで階層を跨いだ除外を実現
SCSSの @for ループ(ループ文)
SCSSの @for ループ
無敵の小さな蚊
無敵の小さな蚊
3ヶ月前
SCSSの @for ループ(ループ文)
相対パスと絶対パスの使い方
相対パスは、モジュールやディレクトリ内のローカルな参照に適しており、柔軟性があります。一方、絶対パスはウェブサイト全体で共通のリソース(CSS、画像、CDNなど)を参照する際に便利です。両者を理解して使い分けることで、パスのエラーや読み込み不具合を防げます。
Details
Details
2ヶ月前
相対パスと絶対パスの使い方
【WordPress対応】郵便番号から住所を自動入力!「Zipaddr-JP」プラグインの導入方法と使い方
目次 プラグイン「Zipaddr-JP」とは 「Zipaddr-JP」の特徴 プラグイン「Zipaddr-JP」の使い方 プラグイン「Zipaddr-JP」のインストール お問い合わせフォームとの連携 さいごに プラグイン「Zipaddr- […]
メモ・ノートスケ
メモ・ノートスケ
2ヶ月前
【WordPress対応】郵便番号から住所を自動入力!「Zipaddr-JP」プラグインの導入方法と使い方
フッターのJavaScriptは画像読み込みに影響する?ブラウザの読み込み順と最適化の基本
はじめに Webサイトの表示速度や操作感は、単にコンテンツの量や見た目だけでなく、ブラウザがリソースをどのように読み込むかによっても大きく左右されます。特にJavaScriptや画像の読み込み順序、そしてそれらがどのように相互作用しているか […]
解構人
解構人
2ヶ月前
フッターのJavaScriptは画像読み込みに影響する?ブラウザの読み込み順と最適化の基本
【2025年最新版】WordPress制作者が実務で愛用するおすすめプラグイン10選【フォーム・SNS・セキュリティ・カスタマイズ】
目次 1. お問い合わせフォーム系プラグイン Contact Form 7 2. 柔軟なカスタムフィールドを追加できる定番プラグイン Advanced Custom Fields(ACF) 3. SNS連携・インスタ埋め込みプラグイン Sm […]
メモ・ノートスケ
メモ・ノートスケ
1ヶ月前
【2025年最新版】WordPress制作者が実務で愛用するおすすめプラグイン10選【フォーム・SNS・セキュリティ・カスタマイズ】