Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

Cloudflare で ETag ヘッダーを使う

最終更新 Markdown で表示Agent セットアップ

ETag ヘッダーは、ブラウザーにキャッシュされているリソースの版が、オリジン Web サーバー上のリソースと同じかどうかを識別します。訪問者のブラウザーは ETag を保存します。訪問者がサイトを再訪すると、ブラウザーは各 ETag を保存済みの値と比較します。値が一致すると 304 Not-Modified HTTP レスポンスが返り、キャッシュ済みリソースが最新であることを示します。Cloudflare は、オリジン Web サーバーで設定した強い ETag と弱い ETag の両方に対応しています。

弱い ETag

弱い ETag ヘッダーは、キャッシュ済みリソースが Web サーバー上の版と意味的には同等であることを示します。バイト単位で同一である必要はありません。

強い ETag

強い ETag ヘッダーは、ブラウザーキャッシュ上のリソースと Web サーバー上のリソースがバイト単位で同一であることを保証します。強い ETag ヘッダーを有効にするには Cache Rules を使います。

Respect Strong ETags が有効なときの動作

Cache Rule で Respect Strong ETags を有効にすると、Cloudflare は強い ETag ヘッダー検証を使い、Cloudflare キャッシュ上のリソースとオリジンサーバー上のリソースがバイト単位で同一であることを確認します。

ただし、状況によっては Cloudflare が強い ETag を弱い ETag に変換します。たとえば、次の条件の場合です。

  • Respect Strong ETags が有効
  • Brotli 圧縮 が有効
  • オリジンサーバーのレスポンスに強い ETag ヘッダー etag: "foobar" が含まれる

訪問者の accept-encoding ヘッダーと、オリジンサーバーのレスポンスで使われている圧縮に応じて、Cloudflare ネットワークは次の動作をします。

訪問者の accept-encoding
ヘッダー
オリジンサーバーのレスポンスで使われている圧縮 Cloudflare の動作
gzip, br GZIP 強い ETag ヘッダー etag: "foobar" 付きの GZIP 圧縮レスポンスを訪問者に返します。
gzip, br Brotli 強い ETag ヘッダー etag: "foobar" 付きの Brotli 圧縮レスポンスを訪問者に返します。
br GZIP GZIP を展開し、弱い ETag ヘッダー etag: W/"foobar" 付きの非圧縮レスポンスを訪問者に返します。
gzip Brotli Brotli を展開し、弱い ETag ヘッダー etag: W/"foobar" 付きの非圧縮レスポンスを訪問者に返します。
gzip (なし) 強い ETag ヘッダー etag: "foobar" 付きの非圧縮レスポンスを訪問者に返します。
gzip, br, zstd Zstandard 強い ETag ヘッダー etag: "foobar" 付きの zstd 圧縮レスポンスを訪問者に返します。
gzip, br Zstandard zstd を展開し、弱い ETag ヘッダー etag: W/"foobar" 付きの br レスポンスを訪問者に返します。
zstd Brotli/GZIP 展開して zstd レスポンスを訪問者に返し、弱い ETag ヘッダー etag: W/"foobar" を付けます。

Cloudflare で Respect Strong ETags を有効にすると、Rocket Loader、Email Obfuscation、Automatic HTTPS Rewrites は自動で無効になります。

Respect Strong ETags が無効なときの動作

Respect Strong ETags が無効な場合、次の条件をすべて満たすときに限り、Cloudflare はオリジン Web サーバーが設定した強い ETag ヘッダーを保持します。

  • オリジンサーバーが GZIP または Brotli で圧縮したレスポンス、または非圧縮レスポンスを返す。
  • オリジンサーバーが圧縮レスポンスを返す場合、訪問者が accept-encoding ヘッダーに従い、同じ圧縮(GZIP、Brotli)を受け入れる。
  • Rocket LoaderEmail Obfuscation が無効である。

それ以外の状況では、Cloudflare は強い ETag ヘッダーを弱い ETag ヘッダーに変換するか、強い ETag を削除します。たとえば、次の条件の場合です。

  • Respect Strong ETags が無効
  • Brotli 圧縮 が有効
  • オリジンサーバーのレスポンスに強い ETag ヘッダー etag: "foobar" が含まれる

訪問者の accept-encoding ヘッダーと、オリジンサーバーのレスポンスで使われている圧縮に応じて、Cloudflare ネットワークは次の動作をします。

訪問者の accept-encoding
ヘッダー
オリジンサーバーのレスポンスで使われている圧縮 Cloudflare の動作
gzip, br GZIP GZIP を展開し、Brotli 圧縮レスポンスを訪問者に返します(Brotli 圧縮が有効なため)。弱い ETag ヘッダー etag: W/"foobar" を付けます。
gzip, br Brotli 強い ETag ヘッダー etag: "foobar" 付きの Brotli 圧縮レスポンスを訪問者に返します。
br GZIP GZIP を展開し、弱い ETag ヘッダー etag: W/"foobar" 付きの Brotli 圧縮レスポンスを訪問者に返します。
gzip Brotli Brotli を展開し、弱い ETag ヘッダー etag: W/"foobar" 付きの GZIP 圧縮レスポンスを訪問者に返します。
gzip (なし) オリジンレスポンスを GZIP で圧縮し、弱い ETag ヘッダー etag: W/"foobar" 付きで訪問者に返します。
gzip, br, zstd Zstandard 強い ETag ヘッダー etag: "foobar" 付きの zstd 圧縮レスポンスを訪問者に返します。
gzip, br Zstandard zstd を展開し、弱い ETag ヘッダー etag: W/"foobar" 付きの非圧縮レスポンスを訪問者に返します。
zstd Brotli 展開して非圧縮レスポンスを訪問者に返し、弱い ETag ヘッダー etag: W/"foobar" を付けます。

詳細は コンテンツ圧縮 を参照してください。

重要な注意

  • 強い ETag ヘッダーの値は、二重引用符で囲んで設定する必要があります(例: etag: "foobar")。形式が正しくない場合、Cloudflare は弱い ETag に変換せず、ETag ヘッダーを削除します。

  • リソースがキャッシュ可能でキャッシュミスが起きた場合、Cloudflare は ETag ヘッダーをオリジンサーバーへ送りません。キャッシュを埋めるために、レスポンス本文全体が必要だからです。

  • オリジン(または R2)が accept-encoding に基づいて圧縮する場合、最初の圧縮タイプがキャッシュされます。強い ETag が用途に合うかを検討するか、Cache Key ルールで異なる圧縮タイプを扱います。

役に立ちましたか?