同じ URL の静的ファイルを差し替えたときのキャッシュ

一言まとめ

同じ名前で画像を差し替えると、Cloudflare のエッジキャッシュとブラウザキャッシュの 2 段に古い版が残る。エッジは URL 単位のパージで消せるが、ブラウザ側は max-age が切れるか強制再読み込みするまで残る。

作成 · 更新 · #cloudflare#cache#pages
目次 7 sections
  1. 01 古い版が残る 2 つの層
  2. 02 どの層に残っているかを curl で調べる
  3. 03 エッジキャッシュを URL 単位でパージする
  4. 04 ブラウザ側の確認
  5. 05 差し替えのたびにパージしないための方法
  6. 06 関連
  7. 07 更新履歴

古い版が残る 2 つの層#

Cloudflare Pages にデプロイしても、同じ URL のファイルは次の 2 か所に古い版が残ることがある。

層残る期間消し方
Cloudflare のエッジキャッシュCache-Control の max-age までダッシュボードか API でパージする
閲覧者のブラウザキャッシュ同じく max-age まで閲覧者が強制再読み込みする。サイト側からは消せない

max-age=604800(7 日)が付いた画像なら、デプロイ後も最大 7 日間は古い画像が表示される。HTML は新しくなっているのに画像だけ古い、という状態になりやすい。

どの層に残っているかを curl で調べる#

Terminal window
# 通常の URL。cf-cache-status と age でエッジのキャッシュ状態を見る
curl -sI https://example.com/images/shot.webp | grep -i "content-length\|cf-cache-status\|^age\|cache-control"
# クエリを付けるとエッジのキャッシュキーが変わり、オリジン(デプロイ済みの版)が返る
curl -sI "https://example.com/images/shot.webp?v=$(date +%s)" | grep -i "content-length\|cf-cache-status"
# 中身が新しい版かはハッシュで比べる
curl -s https://example.com/images/shot.webp | md5sum
md5sum public/images/shot.webp
  • 通常の URL が cf-cache-status: HIT で age が大きく、クエリ付きの URL だけが新しいサイズなら、エッジに古い版が残っている。
  • curl では新しい版が返るのにブラウザで古く見えるなら、ブラウザキャッシュに残っている。
  • www 付きのホストも別の URL として確認する。

エッジキャッシュを URL 単位でパージする#

  1. ダッシュボードでゾーンを開き、Caching → Configuration に進む(直リンク: https://dash.cloudflare.com/?to=/:account/:zone/caching/configuration)。
  2. Purge Cache の Custom Purge を選ぶ。
  3. Purge by で URL を選び、完全な URL を入れる。ワイルドカードは使えない。
  4. Purge を押す。

パージ後の最初のリクエストは MISS になり、オリジンから取り直した版が再びキャッシュされる。Purge Everything はゾーン全体のキャッシュを消すため、1 ファイルの差し替えでは使わない。

ブラウザ側の確認#

  • そのページで強制再読み込みする(Ctrl+Shift+R、Mac は Cmd+Shift+R)。
  • シークレットウィンドウで開く。

ほかの閲覧者のブラウザに残った古い版は、max-age が切れるまで消えない。

差し替えのたびにパージしないための方法#

  • ファイル名を変える: shot-2026-10.webp のように差し替えごとに URL を変える。HTML が新しい名前を参照するので、エッジもブラウザも古い版を使わない。
  • パスごとに max-age を短くする: Pages なら public/_headers で、差し替えるファイルのパスだけ Cache-Control を短くする。ほかの静的ファイルの長いキャッシュは変えずに済む。
/images/*
Cache-Control: public, max-age=3600

関連#

更新履歴#

  • 2026-10-12: 初版

出典

  1. https://developers.cloudflare.com/cache/how-to/purge-cache/purge-by-single-file/
  2. https://developers.cloudflare.com/cache/how-to/purge-cache/purge-everything/

同じトピック — Cloudflare