gazou-compressor.jp

画像CDNとキャッシュ戦略 — Cache-Control/ETag/指紋付きURLの実務

画像は一度整えたら長く使う資産。配信でつまずくのは多くがキャッシュ戦略です。 本稿は Cache-Control/ETag/immutable とURL指紋(ハッシュ/バージョン)、CDNにおけるオリジン運用まで 「壊さず速い」最短構成を、失敗例とチェックリスト込みで解説します。

画像の作成自体は 圧縮テク集運用フロー を参照。OGPの扱いは OGPの作り分けへ。

要点(TL;DR)

  • 配信URLは指紋付き(例: hero_v2.webp かハッシュ)。
  • HTTPヘッダは Cache-Control: public, max-age=31536000, immutable を既定、 差し替えは新URLで。
  • オリジン短め、CDN長め。Purgeか新URLで即時反映。
  • OGP/サイトマップは絶対URL+HTTP200。壊れやすい所から守る。

1. なぜ“URL指紋+immutable”が最短か

長期キャッシュは速くても差し替えが難点。そこでURLを変えられる設計にします。URLが変われば古いキャッシュは使われず、 CDNでも即時に新画像へ切替わります。検証型(ETag/Last-Modified)に頼るより事故が少なく、構成も簡単です。

命名の例
slug_hero_v1.webp → 差し替え時は slug_hero_v2.webp。あるいはビルドでハッシュを付与。

2. 実務レシピ(ヘッダとキャッシュの分担)

場所設定意図
CDNpublic, max-age=31536000, immutable世界中に長期配布。差し替えは新URL/個別Purge。
オリジンpublic, max-age=300(例)編集時の更新性を確保。CDNが上書き。

3. ケーススタディ

ブログのヒーロー画像をリニューアル。CDNはimmutableのため反映されず…という事故を、 ファイル名を hero_v1.webphero_v2.webp に変えるだけで一瞬で解消。 ついでに古いOGPも絶対URLで差し替え、SNSデバッガで再取得して確実に更新しました。

4. よくある落とし穴

  • 指紋なしでimmutable → 更新できずに延々古い画像
  • OGPを相対URL → クローラが取得できず無地カード
  • ETag頼みで多地域CDNの整合が乱れる。

5. 公開前チェックリスト

  1. URLは指紋付き(ハッシュ or v2)。
  2. 画像は サイトマップ・OGPとも絶対URLでHTTP200。
  3. CDN/オリジンのCache-Controlを分けた。
  4. 差し替え手順(新URL/Purge)が運用に書かれている。

6. FAQ

サムネやOGPもimmutableで良い?
指紋付きURLにしておけばOK。頻繁に差し替える運用はPurgeの癖を掴むまでmust-revalidateでも可。
ETagとハッシュは併用すべき?
どちらかで十分。指紋化していればETagはオプションです。検証型を使うときはETag/Last-Modifiedを統一的に出すこと。

7. まとめ:URLを変えられる設計が最短

キャッシュ設計の肝は“壊さず差し替える”こと。URL指紋+長期キャッシュ、これさえ守れば配信は安定します。 画像自体の最適化は /compressor /compare で仕上げましょう。

gazou-compressor.jp 編集部
画像圧縮・変換・背景除去などの実践テクニックと、Webで“速く・軽く・崩さない”ためのノウハウを発信しています。

関連記事