ロリポップで画像やCSSを更新したのに古いまま表示される時の直し方
画像を差し替えたのに古い写真が出る、CSSを直したのに見た目が変わらない。サイトを更新していると、このキャッシュ問題はかなりストレスになります。
ただし、原因はブラウザキャッシュだけとは限りません。ロリポップの公開フォルダへ送れていない、別ファイルを編集している、画像URLが変わっていない、スマホだけ古いCSSを見ている、などが混ざります。
確認日と対象
確認日: 2026年5月18日。ロリポップでHTML/CSS/PHPサイトをFTPまたはFTPSで更新し、画像、CSS、JavaScript、SVG図解などの静的ファイルが古いまま表示される時の確認を対象にしています。
CDN全体のキャッシュ設計やWordPressプラグイン固有のキャッシュ設定は対象外です。まず、ブラウザキャッシュ、ロリポップ側のキャッシュ、アップロード先、ページ側の参照URLを分けるための記事として使ってください。
この記事で解決する症状
- 画像を差し替えたのに、ページでは古い画像が出る
- CSSを更新したのに、色、余白、スマホ表示が変わらない
- 画像URLを直接開いた時と、ページ内で表示される画像が違う
?v=やfilemtime()を使うべき場面と避ける場面を分けたい
このページで整理できること
- ブラウザキャッシュ、ロリポップ側のキャッシュ、FTPアップロード先ミス、HTML側の参照URLを分ける
- 画像、CSS、JavaScript、SVG図解のどれにキャッシュバスターを付けるべきか決める
?v=、新しいファイル名、filemtime()の使い分けを整理する- PC用画像とスマホ用画像、
img srcとpicture sourceの確認漏れを防ぐ
このページで作れる整理メモ
古い画像やCSSが出る時は、「キャッシュかも」で止めず、URL、参照元HTML、FTP上の更新日時、試した確認をメモにします。AIへ貼る時は、FTP情報や管理画面情報を伏せてください。
- Web公開トラブル確認メモ: URL、変更ファイル、確認済みのことを整理する
- AIにCSS調整を頼む時のスクショ説明テンプレ: PCとスマホで違う表示を説明する
- AIにFTPトラブルを相談する時の情報整理: FTP上の右側フォルダ、更新日時、転送結果を整理する
先に結論
CSS、JavaScript、差し替え画像、SVG図解のようにブラウザへ保存されやすいファイルは、更新時にキャッシュバスターを付けるべきです。
ただし、毎回ランダムな値を付けてキャッシュを完全に殺すのではなく、「ファイルを更新した時だけURLが変わる」形にします。これなら、普段は速く表示しつつ、更新時だけ確実に新しいファイルを読ませられます。
古い画像やCSSが出る時の確認順
画像やCSSのURLを直接開き、?v=、画像名変更、CSSのバージョン番号、FTP更新日時の順に確認します。
まず分けること
| 状態 | 疑う場所 | 最初に見ること |
|---|---|---|
| 画像URLを直接開いても古い | ブラウザキャッシュ、画像ファイル名 | URL末尾に ?v=1 を付けて開く |
| 画像URLが404になる | アップロード先、ファイル名 | FTP上の置き場所と大文字小文字を見る |
| CSSだけ古い | CSSキャッシュ、linkタグ | style.css?v=... の番号を変える |
| スマホだけ古い | スマホブラウザのキャッシュ、メディアクエリ | シークレットタブ、別回線、CSSの直接表示を見る |
| FTPの右側の日時が古い | アップロード失敗、転送先違い | FileZilla/WinSCPの右側の更新日時を見る |
キャッシュバスターを使うべきもの
キャッシュバスターは、ブラウザが古いファイルを持ち続けると困るものに使います。特に、見た目や操作に関わるファイルは優先度が高いです。
| 対象 | 使う理由 | 向いている方法 |
|---|---|---|
| CSS | 色、余白、幅、スマホ表示が古いまま見えるため | filemtime() または ?v=更新日 |
| JavaScript | ボタン、コピー機能、拡大表示などの動きが古いまま残るため | filemtime() |
| SVG図解 | 図解の文字や手順を直しても、古い図が表示されるため | 同名なら ?v=更新日、大きな変更なら新ファイル名 |
| 説明画像 | 画面キャプチャや手順画像が古いと、読者が間違えるため | 新ファイル名、または ?v=更新日 |
| 共通レイアウト用ファイル | 全ページの見た目や操作に影響するため | 共通includeで自動付与 |
キャッシュバスターを使わない方がよいもの
キャッシュバスターは便利ですが、何でも付ければよいわけではありません。キャッシュは本来、サイトを速く表示するための仕組みです。
| 対象や方法 | 避ける理由 | 代わりの考え方 |
|---|---|---|
| 毎回ランダム値を付ける | 毎回新しいURLになり、CSSや画像を毎回読み直して遅くなる | 更新時刻や日付だけを付ける |
| 毎アクセスで現在時刻を付ける | キャッシュが一切効かず、サーバーにもユーザーにも無駄が出る | filemtime() でファイル更新時だけ変える |
| 変わらないロゴや固定アイコン | 長くキャッシュさせた方が表示が速い | 変更時だけファイル名や ?v= を変える |
| 記事本文のHTML/PHP | 通常はページ自体の更新確認で足りる | 公開URL、更新日時、HTML出力を確認する |
| 外部CDNのライブラリ | こちら側で勝手に管理しにくい | CDNのバージョン指定や公式の読み込みURLを使う |
なぜ「更新時だけURLを変える」のがよいのか
ブラウザは、同じURLのCSSや画像を再利用します。これは表示速度を上げるためには正しい動きです。しかし、サイト運営者が同じファイル名で中身だけ更新した時、ブラウザが古いファイルを持ち続けることがあります。
そこで、ファイルを更新した時だけ ?v=20260518 のようにURLを変えます。ブラウザから見ると別のURLになるため、新しいファイルを取りに行きます。一方で、更新していない時は同じURLのままなので、キャッシュの速さも残せます。
画像を差し替えた時の安全な方法
同じファイル名で上書きすると、ブラウザが古い画像を持ち続けることがあります。確実に新しい画像を見せたい時は、ファイル名を変えるのが分かりやすいです。
古い画像:
/assets/images/main.jpg
新しい画像:
/assets/images/main-20260510.jpg
HTML:
<img src="/assets/images/main-20260510.jpg" alt="メイン画像">
画像を頻繁に差し替えるページでは、日付や短い番号をファイル名に入れると、どれが新しい画像か追いやすくなります。
CSSはURL末尾のバージョン番号を変える
CSSはファイル名を毎回変えるより、URL末尾にクエリを付ける方法が扱いやすいです。HTML側で読み込むURLを変えると、ブラウザは別URLとして読み直します。
<link rel="stylesheet" href="/assets/css/style.css?v=20260510">
CSSファイル自体の場所は同じでも、?v=20260510 のように変えることで、古いCSSを読み続ける問題を減らせます。
PHPサイトならfilemtimeで自動化できる
PHPで作っているサイトなら、CSSやJavaScriptの更新日時を使って、自動で ?v= を付けられます。手作業で ?v=1、?v=2 と変え続けるより、変更漏れが減ります。
<?php
$css_path = $_SERVER['DOCUMENT_ROOT'] . '/assets/css/style.css';
$css_version = is_file($css_path) ? filemtime($css_path) : '1';
?>
<link rel="stylesheet" href="/assets/css/style.css?v=<?= htmlspecialchars($css_version, ENT_QUOTES, 'UTF-8') ?>">
この方法では、CSSファイルを更新した時だけURL末尾の数字が変わります。毎回ランダムな値を付けるわけではないので、キャッシュの速さを残しながら、更新時の反映漏れを減らせます。
一時確認なら画像URLに?v=を付ける
画像が本当に差し替わっているかだけ確認したい時は、画像URLの末尾に一時的なクエリを付けて直接開きます。
https://example.com/assets/images/main.jpg?v=1
https://example.com/assets/images/main.jpg?v=20260510
これで新しい画像が見えるなら、ファイル自体は更新されていて、ブラウザキャッシュが残っていた可能性が高いです。
今回の最大のミス: 画像本体だけ見て、ページの参照URLを見ていない
画像差し替えで一番やりがちな失敗は、画像ファイルだけを更新して「直った」と判断することです。実際には、ページ側のHTMLが古い画像URLを読み続けている場合があります。
たとえばスマホ用の図解を直したつもりでも、トップページの picture や source srcset が古いSVGを参照していれば、ユーザーのスマホには古い画像が出続けます。この時、画像URLを直に開く確認だけでは足りません。実際のページHTMLがどの画像を読んでいるかまで確認する必要があります。
| 確認 | 分かること | 不足すること |
|---|---|---|
| 画像URLを直接開く | その画像ファイル自体が新しいか | ページがその画像を読んでいるかは分からない |
ページHTMLの img src / source srcset を見る |
実際に表示ページがどの画像URLを読んでいるか | スマホ用とPC用を両方見る必要がある |
| スマホ幅でページを開く | picture のスマホ用画像が実際に使われているか |
ブラウザキャッシュが残ることがある |
確実に反映させたい時は、同名画像の上書きと ?v= だけで粘るより、新しいファイル名にしてページ側の参照を切り替える方が分かりやすいです。
変更前:
<source media="(max-width: 760px)" srcset="/assets/images/example-sp.svg" type="image/svg+xml">
変更後:
<source media="(max-width: 760px)" srcset="/assets/images/example-sp-v2.svg" type="image/svg+xml">
AIに作業ルールとして伝える内容
AIやCodexに画像差し替えを頼む時は、画像ファイルを上書きするだけでなく、HTML側の参照URLも確認してもらいます。特にスマホ用とPC用で picture や srcset を使っている場合、片方だけ古いURLのままだと「直したはずなのにスマホだけ古い」状態になります。
AIに貼る前に伏せる情報
画像やCSSのURL、HTMLの該当部分は相談に使えますが、FTP接続情報や管理画面情報は貼らないでください。
- FTPホスト、FTPユーザー名、FTPパスワード
- ロリポップ管理画面、ドメイン管理会社、GitHubなどのログイン情報
- DB接続情報、APIキー、管理画面URL
- 顧客名、個人情報、非公開ディレクトリ名を含むパスや画像名
画像を差し替える時は、反映漏れを防ぐために次のルールで作業してください。
ルール:
- 画像ファイルを更新したら、HTML/PHP側の img src / picture source / srcset の参照も確認する
- 同じファイル名で上書きした場合は、参照URLに ?v=YYYYMMDD-内容 のようなバージョンを付ける
- CSSやJavaScriptは、可能なら filemtime() で更新時刻ベースの ?v= を自動付与する
- 毎アクセスでランダム値や現在時刻を付ける方法は、確認用以外では使わない
- それでも反映が不安な場合は、新しいファイル名にして参照を切り替える
- PC用画像とスマホ用画像がある場合は、両方に同じ方針でバージョンを付ける
- 画像URLを直接開いて、新しい画像が返るか確認する
- トップページや記事ページなど、その画像を使っているページ側のHTMLも新しいURLを出しているか確認する
- 変更した画像ファイルと、参照を書き換えたHTML/PHPファイルを報告する
例:
変更前:
/assets/images/example-sp.svg
変更後:
/assets/images/example-sp.svg?v=20260517-arrow2
確認:
- 画像URL直開きで新しい内容が見える
- ページHTML内の srcset / src が新しい ?v= 付きになっている
- スマホ幅で古い画像が出ていない
mdに残すならこの作業ルール
AIに継続してサイト修正を任せるなら、次のようなルールをプロジェクトのmdに残しておくと、同じミスを減らせます。
## 画像差し替え時の反映確認ルール
- 画像を差し替える時は、画像ファイル単体だけで完了扱いにしない。
- その画像を参照しているHTML/PHPの `img src`、`picture source`、`srcset` を必ず確認する。
- スマホ用画像とPC用画像が分かれている場合は、両方の参照を確認する。
- 同名ファイルを上書きした場合は、参照URLに `?v=YYYYMMDD-内容` を付ける。
- CSSやJavaScriptは、可能なら `filemtime()` でファイル更新時刻を `?v=` に入れる。
- 毎アクセスでランダム値や現在時刻を付ける方式は、表示速度を落とすため恒久運用にしない。
- 反映されない可能性が高い画像は、新しいファイル名にして参照を切り替える。
- 本番確認では、画像URL直開きだけでなく、実際のページHTMLが新しい画像URLを出しているか確認する。
- 最終報告には、変更した画像ファイル、変更した参照元ファイル、確認した本番URLを含める。
FTP側の更新日時を見る
キャッシュ対策をしても変わらない時は、サーバー側のファイルが本当に更新されているか見ます。FileZillaやWinSCPの右側で、画像やCSSの更新日時を確認してください。
- 右側の公開フォルダを開いているか
- 画像ファイルの更新日時が新しくなっているか
- 失敗した転送に残っていないか
assets/imagesやassets/cssを別フォルダに送っていないか
AIに投げる時のプロンプト
AIに聞く時は、「古い画像が出る」だけでは情報が足りません。URL、変更したファイル、FTP上の更新日時、試したことをセットで渡すと、切り分けが早くなります。
ロリポップでサイトを更新しています。
画像を差し替えたのにブラウザで古い画像が表示されます。
状況:
- 対象URL:
- 画像URL:
- 変更したファイル名:
- HTML/PHP側で画像を参照している箇所:
- FTPソフト:
- サーバー側の更新日時:
- 試したこと: Ctrl+F5 / シークレットタブ / ?v= を付けて確認 / 画像URL直開き
ブラウザキャッシュ、アップロード先ミス、画像パス間違い、HTML側のsrc/srcsetが古いままのどれが原因か、確認順を出してください。
CSSが反映されない時のAIプロンプト
ロリポップでCSSを更新しましたが、画面に反映されません。
確認したいこと:
- HTMLで読み込んでいるCSSのURL:
- FTP上のCSSの場所:
- サーバー側の更新日時:
- linkタグの内容:
- スマホだけ古いのか、PCも古いのか:
CSSキャッシュ、linkタグのパス、アップロード先ミス、メディアクエリの残り指定を切り分ける手順を教えてください。
やってはいけないこと
- 原因が分からないまま同じファイルを何度も上書きする
- ローカルとサーバーのどちらを見ているか確認せずに作業する
- 画像ファイル名に日本語や空白を混ぜる
- 本番の
.htaccessをバックアップなしで触る - キャッシュだと思い込み、アップロード先の確認を飛ばす
公式情報で確認するところ
キャッシュ、FTP、公開フォルダはサーバー仕様やブラウザの挙動に関わります。Copicodeでは実務の確認順に並べていますが、ロリポップ側の仕様や画面名は公式情報でも確認してください。
| 確認したいこと | 公式情報 | この記事での使い方 |
|---|---|---|
| アップロード済みファイルが表示・更新されない | ロリポップ公式 アップロード済みファイルが表示・更新されない | ブラウザキャッシュ、URL間違い、ファイル名、DNSなどを切り分ける根拠にします。 |
| ロリポップ!アクセラレータ | ロリポップ公式 アクセラレータ設定・解除方法 | CSS、JavaScript、画像など静的ファイルのキャッシュを疑う時に確認します。 |
| FTPソフトの設定 | ロリポップ公式 各種FTPソフトの設定方法 | FileZillaやWinSCPで、右側の公開フォルダと更新日時を確認する時に使います。 |
| 公開フォルダの意味 | ロリポップ公式 公開フォルダとは | 更新した画像やCSSを、実際に公開URLが見ているフォルダへ送れているか確認します。 |