2026.04.30PHPで画像のキャッシュをクリアする方法まとめTECH BLOG

  • HOME
  • TECH BLOG
  • PHPで画像のキャッシュをクリアする方法まとめ

PHPで画像のキャッシュをクリアする方法まとめ

Webサイトを更新したのに「画像が変わらない」という現象に遭遇したことはありませんか?
これはブラウザのキャッシュが原因です。

本記事では、PHPを使って画像のキャッシュをクリア(無効化)する方法を解説します。


なぜキャッシュが問題になるのか?

ブラウザは表示速度を上げるために、画像を一度ダウンロードすると保存(キャッシュ)します。

そのため、下記のような問題が発生します。

・画像を差し替えたのに反映されない
・古い画像が表示され続ける


方法①:クエリパラメータを付ける(最もおすすめ)

画像URLの末尾に「バージョン情報」を付ける方法です。

例(基本)

<img src="image.jpg?v=1">

動的にする(開発用)

<img src="image.jpg?v=<?= time(); ?>">

実務向け(おすすめ)

<img src="image.jpg?v=<?= filemtime('image.jpg'); ?>">

ポイント

  • time()
    → 毎回URLが変わる(常にキャッシュ無効)
  • filemtime()
    → ファイル更新時だけURLが変わる(効率的)

方法②:HTTPヘッダーでキャッシュを無効化

PHP側でブラウザに「キャッシュするな」と指示する方法です。

header('Cache-Control: no-cache, no-store, must-revalidate');
header('Pragma: no-cache');
header('Expires: 0');

画像をPHP経由で出力する場合

<?php
header('Content-Type: image/jpeg');
header('Cache-Control: no-cache, no-store, must-revalidate');

readfile('image.jpg');

ポイント

  • 強制的に毎回ダウンロードされる
  • APIや動的画像でよく使う

方法③:ファイル名を変更する(確実)

画像の名前自体を変える方法です。

image.jpg → image_v2.jpg

ポイント

  • キャッシュを完全回避できる
  • CDN環境でも確実に反映される
  • デプロイ時によく使われる

方法の比較

方法 特徴
クエリパラメータ 簡単・柔軟
filemtime() 更新時のみ反映
HTTPヘッダー 強制無効
ファイル名変更 完全対策