CSS・JSの更新が反映されない時のキャッシュ対策方法

CSS・JSの更新が反映されない時のキャッシュ対策方法3選(バージョン付与・no-cache・.htaccess設定)

2025年8月8日

Webサイトを更新したのに、CSSやJavaScriptの変更がブラウザに反映されない── これは多くのWeb制作者が経験する問題です。原因のほとんどはブラウザやサーバーのキャッシュにあります。

この記事では、初心者でも実践できる3つのキャッシュ対策方法を、詳しく解説

1. なぜCSS・JSが更新されないのか?キャッシュの仕組みを理解する

Webブラウザは、ページ表示を高速化するために、過去に取得したファイル(HTML、CSS、JS、画像など)をキャッシュとして保存します。 キャッシュがあると、同じURLへのアクセス時にはサーバーに再リクエストせずローカルのファイルを表示します。

そのため、サーバーに最新のCSSやJSをアップロードしても、ブラウザが古いキャッシュを表示してしまい、変更が反映されない現象が起こります。

特に発生しやすいケース:

2. 対策方法その1:バージョンパラメータを付ける(最も手軽で確実)

方法

<link rel="stylesheet" href="style.css?v=20250808">
<script src="script.js?v=20250808"></script>

仕組み

メリット

デメリット

実用例

更新日をバージョン番号にする:

<link rel="stylesheet" href="style.css?v=20250808">

開発環境でランダム値を自動付与(PHP例):

<link rel="stylesheet" href="style.css?v=<?php echo time(); ?>">

3. 対策方法その2:HTML側で no-cache を指定する

方法

HTMLファイルのレスポンスヘッダーでキャッシュ制御を行います。 PHPの場合:

<?php
header("Cache-Control: no-cache, must-revalidate");
?>
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>No Cache Example</title>
</head>
<body>
    <link rel="stylesheet" href="style.css">
</body>
</html>

注意点

4. 対策方法その3:.htaccessでCSS・JSのキャッシュを制御する(Apache)

方法

.htaccess を使って、CSSやJSファイルにキャッシュ制御ヘッダーを付与します。

例:CSSとJSを常に最新取得する設定

<FilesMatch "\.(css|js)$">
Header set Cache-Control "no-cache, must-revalidate"
</FilesMatch>

例:短期間(例:1時間)だけキャッシュを有効化する設定

<FilesMatch "\.(css|js)$">
Header set Cache-Control "max-age=3600, must-revalidate"
</FilesMatch>

メリット

デメリット

5. どの方法を選べばいいのか?

方法手軽さ確実性サーバー権限不要
バージョンパラメータ
HTMLでno-cache
.htaccess設定×(サーバー権限必要)

初心者やレンタルサーバー利用者 → バージョンパラメータ
自社サーバー運用者や高度管理 → .htaccess設定+バージョンパラメータ併用

6. SEOへの影響は?

まとめ

CSSやJSの更新が反映されないのは、ほぼ確実にキャッシュが原因です。 以下の3つの方法を理解して使い分るのが良いかもしれません

  1. バージョンパラメータ付与(最も手軽で確実)
  2. HTMLでno-cache(HTMLだけ反映保証)
  3. .htaccessでキャッシュ制御(全サイト一括適用)

これらを組み合わせることで、更新反映の遅延トラブルをほぼ完全に防げます。


.htaccessは階層で引き継がれる?Apacheの挙動を徹底解説

MBTI診断

SEO対策に必須!検索上位を狙うsitemap.xmlの完全ガイド

Google Search Consoleの「代替ページ(適切なcanonicalタグあり)」とは?原因と解決法を徹底解説!

Microsoft純正の新しいコンソールエディタ「edit」が復活!| edit.exe インストール方法

Googleサイト確認のTXTレコードをnslookupで確認する方法【SEO対策】

Googleサーチコンソールに反映されるための最低限のSEO構造とは

PHPで複数ファイルを順番に削除する方法

MBTI診断 | あなたの性格タイプを分析

PDFファイル結合|パスワード設定ツール

【Anker Soundcore Liberty 4】イヤーピース紛失!代替品はAmazonで購入

JavaScriptでタイムゾーン変換!UTCとJST(日本時間)の変換方法

pnpmとは?npmとの違いとインストール方法

git switchの使い方とgit checkoutとの違い

CSS・JSの更新が反映されない時のキャッシュ対策方法3選

ffmpegでMOVファイルを逆再生する方法【音声付き対応】

Windows 11でタスクマネージャー以外からアプリを終了させる方法【PowerShell・コマンドプロンプト】

macOSでドメイン名から情報を取得する方法【初心者向け】

JavaScriptでPCの空き容量やメモリ量を取得できる?Chromeの制限と代替手法

PowerShellでNode.jsの最新バージョン一覧を確認する方法【Volta/Windows対応】

Next.jsでbasePathを/homepage2にしてS3へ静的デプロイする完全手順

Homebrewの「update」と「upgrade」の違い+バージョン確認方法|Macのパッケージ管理

.DS_StoreをGitでアップしない方法|macユーザー向け