Web制作#CSS 反映されない キャッシュ

CSSが反映されない原因とキャッシュの直し方|古い版と新しいHTMLで配置が崩れたLPを8つの画面サイズで確かめた手順【2026年】

書き手佐藤翔太株式会社UrakaTA 代表取締役AIを毎日の実務で使う会社の代表です。社内で実際に起きたことをもとに書いています。
左ではモニターの中で散らばって重なった色の箱に困る担当者、右ではスマホ・タブレット・ノートPCに整然と並んだ箱を落ち着いて確かめる担当者を並べた図
イラスト:AIで作成

この記事の結論

CSSが反映されないとき、僕の会社ではCSSのURLに版の文字列を付けて変え、8つの画面サイズで確かめ直してから報告しています。1〜2サイズの目視では、古いCSSと新しいHTMLで崩れたLPを見落としました。

目次6項目
  1. CSSが反映されない原因はキャッシュ:古い版と新しいHTMLが混ざると配置が崩れる
  2. CSSのキャッシュを確かめて直す対処手順:style.css?v= でURLを変える
  3. 裏方で実際に起きた例:「配置を直した」後に、スマホでもPCでも要素が重なっていた2026年7月
  4. CSSのキャッシュ事故を再発させない:キャッシュバスターと8つの画面サイズの機械チェック
  5. 業務でCSSを更新するときの注意:自分の画面で直っても、相手の画面は古いまま
  6. よくある質問

SNS運用・広告・採用マーケティングの無料相談はこちら →

CSSが反映されないとき、僕の会社で効いたのは、読み込むURLに版の文字列を付けて、変えるたびに更新することでした。2026年7月には、古いCSSと新しいHTMLの組み合わせで配置が崩れる事故を、「直した」と報告した後で見落としていたと分かりました。

キャッシュで何が起きているかと、直す手順、報告の前に確かめる方法を順に書きます。「自分の画面では直ったのに、相手には崩れて見える」という方は、次の章の表から見てください。

CSSが反映されない原因はキャッシュ:古い版と新しいHTMLが混ざると配置が崩れる

CSSを直したのに見た目が変わらないとき、多くはどこかに古いCSSが残っています。HTMLだけ新しくなり、スタイルが古いままだと、変わらないどころか配置が崩れることもあります。

ここでいうキャッシュとは、一度受け取ったファイルを手元や途中に保存し、次からそれを使い回す仕組みのことです。MDNによると、保存したものが「新しい」とみなされる間は、サーバーに取りに行かずにそのまま使われます。

どれだけの間「新しい」とみなすかは、サーバーが返す Cache-Control: max-age で決まります。MDNは、この指定が無くても、条件がそろえば保存して使い回す「ヒューリスティックキャッシュ」があると説明しています。

つまり、CSSに期限を何も指定していないサイトでも、古いCSSが使われることがあります。MDNも、基本的にすべての応答に Cache-Control を明示すべきだとしています。

キャッシュはURLごとに分けて持たれます。ここが厄介な点です。HTMLとCSSは別々のURLなので、HTMLは新しく取り直され、CSSだけ古いまま、という組み合わせが起きます。

新しいHTMLが前提にしている位置の指定が、古いCSSには無い。この状態では、要素の位置がまとめて崩れます。僕の会社の例では、絶対配置の要素が全部、画面の左上に積み重なりました。

古いCSSが残る場所は1つではありません。どこに残っているかで、消し方が変わります。

古いCSSが残る場所起きやすい場面確かめ方・消し方
見ている人のブラウザCSSのURLが変わらないまま中身だけ差し替えた開発者ツールでキャッシュを切って開き直す。根本はURLを変える
サーバーのページキャッシュできあがったHTMLをサーバーが保存して配っているサーバー側のキャッシュを消す。HTMLの中のCSSも古いまま配られる
CDNなどの共有キャッシュ利用者とサーバーの間で、ファイルを配る仕組みを使っている管理画面などから消す。URLを変えれば古いものは使われない
キャッシュ以外置き場所の間違い・ファイルが空・CSSの書き方サーバー上のファイルを直接開き、中身とサイズを確かめる

表の3行目の共有キャッシュは、利用者とサーバーの間に置かれ、複数の利用者で同じ応答を使い回すキャッシュです。MDNは、長い max-age で途中のサーバーに保存されたものを消す方法は無いとしています。

僕なら、どの場所が原因でも効く「URLを変える」を最初に入れます。消して回るより、古いものを使わせない方が確実だからです。

CSSのキャッシュを確かめて直す対処手順:style.css?v= でURLを変える

確実な直し方は、CSSを参照するURLに版の文字列を付け、中身を変えるたびにその文字列も変えます。これをキャッシュバスターと呼びます。

キャッシュバスターとは、URLに版番号やハッシュ値を入れ、更新のたびにURLを変えて古いキャッシュを使わせない方法のことです。MDNは、URLが変われば古いものは使われない、と説明しています。

  1. 開発者ツールでキャッシュを切り、開き直す。 Chromeの開発者ツールの「Network」パネルで「Disable cache」にチェックを入れます。ブラウザのキャッシュを使わない状態で、初めての訪問者の見え方を再現できます。
  2. これで直れば、原因はブラウザのキャッシュ。 直らなければ、CSSのURLを直接開き、サーバー上の中身が新しいかを見ます。古ければ、置き場所かサーバー側のキャッシュを疑います。
  3. HTMLのCSSの参照に、版の文字列を付ける。 下の例の形です。JavaScriptのファイルも同じにします。
  4. CSSを変えるたびに、v= の値を変えてHTMLを出し直す。 値を変え忘れると、手順3を入れても古いCSSが残ります。
  5. ページキャッシュを使っているサイトでは、サーバー側のキャッシュを消す。 HTMLが古いままだと、新しい v= も届きません。
  6. 使う画面サイズを全部、開いて確かめる。 自分の1台で直って見えても、それだけでは足りません。確かめ方は、再発防止の章に書きました。

僕の会社で使っている形は、日付と記号です。下の例の 260722a は、2026年7月22日の1回目の版という意味で、値は例です。

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

MDNの例は2つの形です。bundle.js?v=123 のように問い合わせに入れる形と、bundle.v123.js のようにファイル名に入れる形があります。どちらでも、URLが変わることが要点です。

自分の画面の確認には、強制の再読み込みか手順1の Disable cache を使います。MDNによると、Chromeは再読み込みでCSSなどを確かめ直さない場合があります。訪問者は、そもそも再読み込みをしてくれません。

応答のヘッダーを設定できるなら、MDNは次の組み合わせを説明しています。HTMLは Cache-Control: no-cache で毎回確かめさせ、版付きのCSSには長い max-age を付ける形です。

no-cache は「保存しない」ではなく、「使う前に必ずサーバーに確かめる」という意味です。保存そのものを止めるのは no-store で、MDNはこちらを安易に使わないよう勧めています。

裏方で実際に起きた例:「配置を直した」後に、スマホでもPCでも要素が重なっていた2026年7月

ここからは、僕の会社(株式会社UrakaTA)の作業の記録からの転記です。お客さんの案件なので、業種・サイト・数値が分かる情報は伏せています。

2026年7月22日、ある広告用のLPで、配置の修正を終えたと報告しました。このLPは、要素を座標で置く絶対配置の作りで、画面を区切りごとに見せていく形です。

報告の後、スマホ版もPC版も要素が被っている、と強い指摘が入りました。直したはずの配置で、要素どうしが重なって見えていました。

振り返ると、確認に使っていたのは1〜2サイズのスクリーンショットを目で見ることだけでした。この方法では、次の3つを見逃していました。

  • 縦の短いPCの画面(例 1280×720)。 上下の余白が消え、ロゴが上の帯に被る。
  • タブレットの幅(600〜768px)。 幅を基準にした要素が、縦の長さを食いつぶす。
  • CSSのキャッシュ事故。 古いCSSと新しいHTMLの組み合わせで、絶対配置の要素が全部、左上に積み重なる。

3つ目が、この記事の主題です。CSSのURLが変わらなければ、すでにLPを開いたことのある人のブラウザには古いCSSが残ります。HTMLだけが新しくなるので、直したはずの配置がかえって崩れて見えます。

この件の後、僕の会社では、LPの報告の前に機械でのチェックを回すように変えました。8つの画面サイズで、LPの全部の画面を開き、要素の重なりとはみ出しを数えます。

見つかった重なりを直し、もう一度チェックする、を何度か回しました。重なりがゼロになるまで続けてから、報告し直しています。

調べ始めてから報告し直すまでにかかった時間は、記録に残していないので書きません。

CSSのキャッシュ事故を再発させない:キャッシュバスターと8つの画面サイズの機械チェック

再発を防ぐ要は、CSSのURLを必ず変えることと、自分の画面ではなく決めた画面サイズの全部で確かめることの2つです。僕の会社では、次の3つを決まりにしています。

  • CSSとJavaScriptは、必ずキャッシュバスター付きで参照する。 形は style.css?v=YYMMDDx で、デプロイのたびに v= を更新します。
  • 座標で置く作りのLPは、報告の前に8つの画面サイズで機械のチェックを回す。 あわせて、各画面のスクリーンショットを並べて目でも見ます。
  • 直してはチェックし直す、を重なりがゼロになるまで回してから報告する。 途中で「直りました」と言わないためです。

僕の会社のチェックで使っている8つの画面サイズは、次のとおりです。スマホを4つにしているのは、同じ幅でも縦の長さで崩れ方が変わると考えているからです。

区分画面サイズ(幅×高さ)見たいこと
スマホ375×667、390×844、430×745、430×932小さい画面・縦の短い画面で、要素が重ならないか
タブレット768×1024幅を基準にした要素が、縦を食いつぶしていないか
PC1280×720、1440×900、1920×1080縦の短いPCで、ロゴや固定の帯に被らないか

チェックの中身は、ブラウザを自動で操作する道具(Playwright)でLPを開き、要素の位置を数字で取って比べるものです。見ているのは3つです。

  • 要素どうしの位置が重なっていないか
  • 要素が画面や配置の枠からはみ出していないか
  • ロゴ・申し込みボタンなど、画面に固定した部品と被っていないか

機械のチェックにも、作ってみて分かった落とし穴がありました。中央寄せの文字は、外側の箱が全幅になるので、内側の文字の箱で測ります。消えていく演出の要素は、動きが落ち着いた状態で判定します。

もう1つは、入れ子にした @media の指定を、ブロックの最後に置きます。後ろにある同じ強さの指定に負けて、効かないことがあったためです。

業務でCSSを更新するときの注意:自分の画面で直っても、相手の画面は古いまま

お客さんに「キャッシュを消してください」と頼む前に、URLを変える。 消してもらえば、その人の画面は直ります。ただ、ほかの訪問者のブラウザには古いCSSが残ったままです。

サーバー側のキャッシュも疑う。 ページキャッシュのプラグインがHTMLを保存していると、HTMLの中のCSSも古いまま配られます。実際の例は、WordPressの保存が403になりFTPで回避した手順に書きました。

その件では、CSSファイルのURLの版の文字列が変わらず、ブラウザに古いCSSが残る問題もありました。キャッシュの残る場所が2つ重なると、片方を消しても直りません。

置いたファイルそのものも確かめる。 キャッシュを疑う前に、サーバー上のCSSが空や古い版になっていないかを見ます。置いたファイルが0バイトになった例は、curl の FTPS アップロードで0バイトになる時の直し方にあります。

サーバーの設定で、置いたファイルの扱いが変わることもあります。.htaccess の1行でPHPのソースが表示された例は、.htaccess の SetHandler で PHP のソースが表示される原因に書きました。

AIや外注に修正を任せるときは、確かめ方まで決めて渡す。 僕の会社の例でも、「直した」の報告は1〜2サイズの目視が根拠でした。どの画面サイズで、何を確かめたら「直った」と言うかを、作業の前に決めておきます。

「CSSを直したのに崩れて見える」「スマホとPCで見え方が違う」というときは、下のフォームからご相談ください。原因の切り分けと、確かめ方の作り直しから一緒に見ます。

よくある質問

スーパーリロードで直ったら、CSSの更新は終わりですか?

終わりではありません。直ったのは自分のブラウザのキャッシュだけです。MDNの説明では、ブラウザのキャッシュは利用者ごとに持たれ、期限が切れるか再読み込みするまで残ります。訪問者は再読み込みをしないので、CSSのURLに版の文字列を付けて変えます。

style.css?v= の後ろには何を書けばいいですか?

更新のたびに違う値なら、何でも働きます。MDNは版番号やハッシュ値の例を挙げています。僕の会社では日付と記号の形(style.css?v=YYMMDDx)にして、デプロイのたびに書き換えています。日付が入っていると、どの版が出ているかを見分けやすいと考えています。

スマホだけCSSが反映されないのはなぜですか?

ブラウザのキャッシュは端末ごとに持たれるため、パソコンで新しいCSSが届いても、スマホには古いCSSが残っていることがあります。端末のせいと決めつけず、まずCSSのURLを変えたかを確かめます。そのうえで、スマホの幅で崩れていないかを見ます。

引用元・参考にした記事

  1. HTTP caching出典MDN Web Docs参照
  2. Network features reference出典Chrome for Developers参照

Let's Create
The Next Move.

マーケティング・SNS運用・採用のご相談はこちらから。