画像を上書きしても反映されない原因と対策【アクセラレータ(キャッシュ)設定に注意】

WordPressで画像を同じファイル名で差し替えたのに、なぜか古い画像のまま…。
この現象の多くは、サーバーやブラウザに備わったアクセラレータ(キャッシュ機能)が原因です。
この記事では、Xアクセラレータ(エックスサーバー)ロリポップ!アクセラレータの設定例を交えて、反映されない理由と解決策を解説します。

1 アクセラレータとは?

アクセラレータとは、データを一時的に保存してサイトの表示を高速化する仕組みです。
ページや画像、CSSなどを再利用することで、読み込み速度を大幅に短縮できます。

  • ブラウザキャッシュ: ユーザー端末に保存して再利用。
  • サーバーキャッシュ: HTMLや画像をサーバー側で保持して高速配信。
  • CDNキャッシュ: Cloudflareなどが世界中のサーバーにコピーして配信。

この便利な仕組みですが、「同じファイル名で上書きした画像」では「同じファイルだから更新不要」と判断され、古い画像を表示してしまうのです。

2 Xアクセラレータ(エックスサーバー)の設定例

下図は、Xサーバーのアクセラレータ設定画面です。
WordPressで頻繁に画像やCSSを変更する場合は、一時的にOFFにするのが確実です。

Xアクセラレータ(エックスサーバー)

3 ロリポップ!アクセラレータの設定例

ロリポップでは「サーバーの管理・設定」→「ロリポップ!アクセラレータ」から確認可能。
CMS(WordPressなど)を利用している場合は、OFFにしてから作業すると反映が早くなります。

ロリポップ!アクセラレータ

4 解決策まとめ

  • ① ファイル名を変更: logo.png → logo-v2.png
  • ② ブラウザキャッシュを削除: WindowsはCtrlF5、MacはCmdShiftR
  • ③ アクセラレータを一時停止: サーバーパネルでOFFにする。
  • ④ CDN利用時: Cloudflareなどで「Purge Cache」を実行。

5 functions.phpでキャッシュを自動回避する方法

ファイル更新時に自動でバージョンを付与し、キャッシュをリセットできるコードです。
これをテーマのfunctions.phpに追加します。

<?php 
add_filter( 'style_loader_src', 'auto_version_assets', 9999 ); 
add_filter( 'script_loader_src', 'auto_version_assets', 9999 );

function auto_version_assets( $src ) {
  if ( strpos( $src, 'ver=' ) ) {
    return remove_query_arg( 'ver', $src );
  }
  $file_path = ABSPATH . str_replace( home_url( '/' ), '', $src );
  if ( file_exists( $file_path ) ) {
    $src = add_query_arg( 'ver', filemtime( $file_path ), $src );
  }
  return $src;
}
?>

6 まとめ

アクセラレータ(キャッシュ)はサイトを高速化する強力な仕組みですが、
WordPressで頻繁に更新するサイトでは「反映されない」トラブルの原因になります。
制作中はOFF、公開後にONへ戻す運用が理想です。