よくある原因
CSSファイルが外部ファイルとして分離している構成では、HTMLとCSSで別々のキャッシュポリシーが適用されます。HTMLの更新後にCSSのキャッシュ期間が残っていると、新しいHTMLが古いCSSをロードし続け見た目が変わりません。チェックリストの最初のステップとして「CSSのCache-ControlヘッダーのMax-Ageを確認する」を入れておくと問題の根本に素早く気づけます。
外部CSSがCDNで配信されている場合、HTMLをホストしているサーバーとCDNの間でキャッシュが二重になることがあります。片方のキャッシュをパージしてももう片方が残ると改善しません。「HTMLホストのキャッシュ」と「CSSホストのCDNキャッシュ」を独立してチェックする項目をリストに持っておくと抜け漏れを防げます。
- 相手がログインなしで開ける状態か確認する
- PCとスマホで最低1回ずつ表示を確認する
- 内部情報・個人情報・不要な外部送信が残っていないか見る
- レビュー期限と修正時の差し替え方を決めておく
自分側で確認すること
CSSの差し替え後は必ずデベロッパーツールのNetworkタブで「CSSファイルのサイズ」が期待どおりかを確認してください。古いキャッシュから読まれている場合はディスクキャッシュと表示されます。`(disk cache)`と表示されているCSSがあれば、そのファイルに対してCDNキャッシュパージを実行してください。
HTMLのlink要素のhrefを確認し、CSSのURLにバージョンクエリが含まれているか確認してください。`?v=1`などのクエリがなければ古いURLで古いキャッシュが使われ続けます。更新のたびにクエリの番号を上げることをルール化するか、ハッシュ付きファイル名を採用することを検討してください。
- HTML内の外部script・form action・iframeを確認する
- APIキーやトークンらしき文字列がないか検索する
- 画像・CSS・JSのパスが公開後も解決できるか見る
- noindexと認証を混同せず、必要なら両方設定する
相手側で確認すること
相手にCSSのキャッシュ問題を確認してもらうには「DevToolsを開いてNetworkタブにあるDisable cacheにチェックを入れてからリロードしてください」と伝えるのが効果的です。この設定を有効にするとDevToolsが開いている間はすべてのキャッシュがスキップされ、サーバーから最新のCSSが必ず取得されます。
相手がDevToolsの使い方を知らない場合は「シークレットウィンドウで開いてみてください」という依頼が次善の策です。シークレットウィンドウは通常の閲覧データを引き継がないため、古いCSSキャッシュが乗ってこない状態で確認できます。この操作で正常に表示されれば原因はブラウザのローカルキャッシュと確定します。
- HTML内の外部script・form action・iframeを確認する
- APIキーやトークンらしき文字列がないか検索する
- 画像・CSS・JSのパスが公開後も解決できるか見る
- noindexと認証を混同せず、必要なら両方設定する
再発防止の運用
CSSを更新するたびに行う確認ステップをプロジェクトのWikiに「CSSデプロイチェックリスト」として整備してください。「①CSSのURL変更(クエリ更新)→②CDNキャッシュパージ→③2台の端末で確認→④チームへ完了通知」の4ステップを定型化すると、ミスが起きにくくなります。
中長期的にはビルドツールを導入してCSSのファイル名にコンテンツハッシュを自動付与する仕組みを整えましょう。Viteを使えば設定ゼロでハッシュ付きCSSが出力されます。手動でクエリを管理するコストがなくなり、更新のたびに自動でキャッシュが無効化されるため運用が大幅に楽になります。
- HTML内の外部script・form action・iframeを確認する
- APIキーやトークンらしき文字列がないか検索する
- 画像・CSS・JSのパスが公開後も解決できるか見る
- noindexと認証を混同せず、必要なら両方設定する
よくある質問
CSSのURLにクエリパラメータを付けると検索エンジンに影響しますか?
Googleはクエリパラメータ付きCSSを正しく処理します。検索エンジンへの影響は実質的にありません。クエリ付きCSSはWebパフォーマンス最適化の標準的な手法として広く使われています。
CSSキャッシュが残っているかどうかを手早く確認する方法は?
ChromeのDevTools→Networkタブを開き、CSSファイルの行の「Size」列を確認します。「(disk cache)」と表示されていればローカルキャッシュから読み込まれています。「(memory cache)」ならメモリキャッシュです。どちらも最新ファイルではない可能性があります。
単一HTMLファイルにCSSをインライン記述すれば問題を根本から防げますか?
はい。`<style>`タグ内にすべてのCSSを書けばCSSファイルのキャッシュ問題が発生しません。HTMLとCSSが一体化するためHTMLのみ差し替えれば必ず最新スタイルが適用されます。ただしCSSが複数ページで共有できなくなる点はトレードオフです。