インフラ用語集へ戻る

Web・API / Web/キャッシュ

Varyとは

Vary header。どのリクエストヘッダーごとにキャッシュを分けるかを示すHTTPヘッダーです。

用語集内のカードを見る

詳細な図解

リクエスト条件ごとにキャッシュを分ける流れ
リクエストヘッダーOriginやAccept-Languageを送る
Vary応答分岐に使うヘッダーを示す
CDN/プロキシキーを分けて保存する
キャッシュ再利用一致する条件だけ再利用する
  • Vary: Originを確認
  • CDNキャッシュキーと突合
  • 過剰なVaryは効率を下げる

この記事で学べること

Varyを、定義だけで終わらせず、現場で出てくる場面、確認材料、見落としやすい点、関連語とのつながりまで順に確認できます。

  1. Varyを読むときの前提
  2. キャッシュ混在を防ぐ
  3. CORSと認証付き応答を見る
  4. 言語や圧縮の分岐を確認する
  5. 変更証跡と引き継ぎ

実務メモ

Vary値、CDNキャッシュキー、返却ヘッダーを同時に見る

どこで効くか

VaryはCORS、ACAO、言語切替、圧縮、CDNキャッシュ、プロキシ再利用で効きます。利用者ごとに違う応答が混ざる、ブラウザだけCORS失敗する調査で確認します。

残す証跡

証跡には対象URL、リクエストヘッダー、Vary値、CDNキャッシュキー、Hit/Miss、ACAO、Accept-Language、Accept-Encoding、レスポンス差分を残します。

避けたい誤解

Vary: Originがないと別Origin向けのACAOがCDNで再利用されることがあります。逆にVaryを広げすぎるとキャッシュ効率が落ち、原因調査も複雑になります。

まず確認すること

  • VaryとCDNキャッシュキーを突合する
  • Originごとの応答差分を確認する
  • Hit/Missと返却ヘッダーを同時に保存する

Varyを読むときの前提

Varyは、どのリクエストヘッダーごとにキャッシュを分けるかを示すHTTPレスポンスヘッダーです。CORS、言語切替、圧縮、デバイス別表示、CDNキャッシュ制御で使います。

実務では、Vary: Origin、Accept-Encoding、Accept-Language、Authorization、Cookie、CDNのキャッシュキー、プロキシの再利用条件を確認します。

証跡には、対象URL、リクエストヘッダー、Vary値、CDNキャッシュキー、Hit/Miss、ACAO値、レスポンス差分、確認時刻を残します。

キャッシュ混在を防ぐ

Varyが不足すると、Originや言語が違う利用者へ別の利用者向けのレスポンスが返ることがあります。CORSではVary: Originがないと、CDN経由で別Origin向けのACAOが再利用される場合があります。

一方でVaryを広げすぎるとキャッシュ効率が落ちます。分岐に本当に使っているヘッダーだけを指定し、CDN側のキャッシュキーと合わせます。

  • レスポンス差分が出るヘッダーを確認する。
  • VaryとCDNキャッシュキーを突合する。
  • Hit/Missと返却ヘッダーを同時に記録する。

CORSと認証付き応答を見る

OriginごとにACAOを変えるAPIでは、Vary: Originが重要です。認証付きAPIや管理画面では、CookieやAuthorizationの扱いによりキャッシュしてはいけないレスポンスもあります。

ブラウザではCORSエラーに見えても、実際はCDNが古いACAOや別Origin向けの応答を返していることがあります。API、CDN、ブラウザの3点で確認します。

  • OriginごとのACAOを比較する。
  • 認証付き応答をキャッシュしていないか確認する。
  • CDNのヘッダー正規化を確認する。

言語や圧縮の分岐を確認する

Accept-LanguageやAccept-Encodingで応答が変わる場合もVaryが必要です。圧縮済み応答や言語別ページが混ざると、文字化け、表示崩れ、想定外の言語表示につながります。

モバイル/PC、A/Bテスト、地域別出し分けなどをヘッダーで行う場合は、キャッシュキーに含めるか、そもそもキャッシュ対象にしないかを決めます。

  • Accept-Encodingと圧縮形式を確認する。
  • Accept-Languageの応答差分を見る。
  • ヘッダー分岐の所有者を確認する。

変更証跡と引き継ぎ

Vary対応では、対象URL、分岐ヘッダー、Vary値、CDN設定、キャッシュHit/Miss、障害時の再現条件を残します。ブラウザ、CDN、オリジンで見える値が違うためです。

引き継ぎでは、Web基盤担当、API担当、CDN運用担当、関連語としてHTTPヘッダー、CORS、ACAO、CDNを残すと確認しやすくなります。

  • 変更前後のレスポンスヘッダーを保存する。
  • CDN設定画面のキー条件を記録する。
  • 再現に使ったリクエストヘッダーを残す。

関連語

同じ主要カテゴリの用語

Web・APIの学習順

同じ主要カテゴリの用語をまとめて確認できます。現在の用語を起点に、前後の用語へ進むと文脈を保ったまま読み進められます。

InfraEngKit内の関連機能