メディアライブラリから画像を完全に削除して、同じ名前で別の画像を上げ直す。
よくやる作業だと思います。
すると、古いほうの画像が表示されることがあります。
リロードしても直らない。ログインし直しても直らない。
キャッシュを消しても、まだ古いまま。
キャッシュではありませんでした。 サーバーが、実際に古いファイルを返しています。

何が残っているのか
画像は、1枚では終わりません
WordPress に画像を1枚アップロードすると、サイズ違いが何枚も作られます。
一覧用、記事用、大きい画面用。
そして、画像を軽くするプラグインを入れていると、さらに増えます。
fig-a.png 元の画像
fig-a-1024x576.png サイズ違い
fig-a-768x432.png サイズ違い
fig-a-150x150.png サイズ違い
fig-a.png.avif 変換後
fig-a-1024x576.png.avif 変換後
fig-a-768x432.png.avif 変換後
(以下続く) 手元の環境で数えたら、1枚から24個のファイルができていました。
削除で消えるのは、一部だけです
ここが原因です。
WordPress が把握しているのは、自分が作ったファイルだけです。
プラグインが後から作った .avif や .webp は、管理の外にあります。
だから、削除すると .png は消えて、.png.avif は残ります。
残ったファイルが、返されます
振り替える仕組みがあります
画像を軽くするプラグインは、.htaccess にこういう指示を書きます。
「PNG を求められたとき、同じ名前の AVIF があれば、そちらを返す」。
軽いほうを配るための仕組みです。普段は、これで速くなります。
ただ、元のファイルを確認していません
見ているのは、変換後のファイルがあるかどうかだけでした。
元の PNG が消えているかどうかは、判断に入っていません。
だから、こうなります。PNG は無い。AVIF は残っている。振り替えが働く。
古い画像が、正常な応答として返ります。
404 になりません。 だから「消えたはずなのに表示される」。
確かめる方法
ファイルの大きさを見れば、はっきりします。
サーバーから、何が返っているか
ブラウザの開発者ツールで、画像のURLを開いてください。
「Network」タブで、その画像の行を見ます。
Content-Type image/avif ← PNGを開いたのにAVIFなら、振り替わっている
Content-Length 17746 ← このバイト数を覚えておく サーバー上のファイルと突き合わせる
FTP でつないで、wp-content/uploads の中を見ます。
同じ名前で .avif が付いたファイルを探してください。
バイト数が一致したら、それが返っています。
そして、そのファイルの日時を見てください。
新しく上げた画像より古ければ、確定です。
もっと簡単な見分け方
縦横比を比べる方法もあります。
サイズ違いのファイル名には、寸法が入っています。
古い画像と新しい画像で比率が違えば、名前を見るだけで分かります。
古い 1024x536 / 768x402 / 1536x804 比 1.91
新しい 1024x576 / 768x432 / 1536x864 比 1.78 混ざっていたら、古いものが残っています。
直し方

1. 取り残されたファイルを探す
元の画像が無いのに、変換後だけが残っているものを探します。
FTP でつないで、同じ名前のファイルを並べて見比べてください。
.avif はあるのに .png が無いものが、取り残しです。
サーバーにコマンドでつなげるなら、こう打てます。
find wp-content/uploads -name "*.avif" | while read f; do
orig="${f%.avif}"
[ -f "$orig" ] || echo "$f"
done まず一覧を見てください。 いきなり消さないこと。
2. 消す
一覧を確認して、身に覚えのあるものだけ削除してください。
消す前に控えを取ることを勧めます。
3. ブラウザ側も消す
サーバーを直しても、手元に残っていることがあります。
変換後の画像には、長い保存期間が設定されていることが多いです。
手元の環境では、365日でした。
いったん受け取ると、1年持ちます。 シークレットウィンドウで確認するのが早いです。
起きないようにする
使っているプラグインを確認してください
画像を軽くするプラグインを入れているなら、更新を確認してください。
この件は、複数のプラグインで起こりうる構造です。
元のファイルの存在を確認していれば、起きません。
自分の作っているものでも起きていました
正直に書きます。
この問題は、自分が作っているキャッシュのプラグインでも起きていました。
見つけて、直しました。
振り替えの条件に、元のファイルがあるかどうかを足しただけです。
無ければ、素直に 404 を返すようにしました。
そして、削除のときに変換後のファイルも消すようにしています。
詳しい話は、開発の記録のほうに書きました。
当面の回避策
同じ名前で上げ直さない。 これがいちばん簡単です。
fig-a.png ではなく fig-a2.png にする。
名前が違えば、振り替えの対象になりません。
「キャッシュです」で終わらせない
この症状は、2022年から報告されています。
そして、「ブラウザキャッシュだと思います」と答えられて、そのまま閉じられているものを見かけました。
質問した方は、リロードもログインし直しも試していました。
キャッシュを消しても直らないなら、別の原因です。
サーバーに、取り残されたファイルが無いか。
そこを見てください。
まとめ
- 画像1枚から、サイズ違いと変換後が何枚も作られる(手元では24個)
- 削除で消えるのは、WordPress が把握しているものだけ
- プラグインが作った
.avifや.webpは管理の外。残る - 振り替えの仕組みが、元のファイルの有無を見ていない
- だから 404 にならず、古い画像が正常に返る
- 確認は、Content-Type と Content-Length。サーバー上のファイルと突き合わせる
- 縦横比が混ざっていたら、古いものが残っている
- 直すには、元が無い変換後ファイルを探して消す
- まず一覧を出す。 いきなり消さない
- 変換後の画像は保存期間が長い(手元では365日)。シークレットウィンドウで確認
- 当面は、同じ名前で上げ直さないのが早い
- 「キャッシュです」で片づけない。 消しても直らないなら別の原因
消したはずのものが返ってくる、というのが厄介でした。
エラーなら、まだ気づきます。
正常な応答として古い画像が返るので、どこを見ればいいのか分かりません。
※本記事は2026年9月時点の内容です。プラグインの更新で、状況は変わります。

