ETag ヘッダーは、ブラウザーにキャッシュされているリソースの版が、オリジン Web サーバー上のリソースと同じかどうかを識別します。訪問者のブラウザーは ETag を保存します。訪問者がサイトを再訪すると、ブラウザーは各 ETag を保存済みの値と比較します。値が一致すると 304 Not-Modified HTTP レスポンスが返り、キャッシュ済みリソースが最新であることを示します。Cloudflare は、オリジン Web サーバーで設定した強い ETag と弱い ETag の両方に対応しています。
弱い ETag ヘッダーは、キャッシュ済みリソースが Web サーバー上の版と意味的には同等であることを示します。バイト単位で同一である必要はありません。
強い ETag ヘッダーは、ブラウザーキャッシュ上のリソースと Web サーバー上のリソースがバイト単位で同一であることを保証します。強い ETag ヘッダーを有効にするには Cache Rules を使います。
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 が無効な場合、次の条件をすべて満たすときに限り、Cloudflare はオリジン Web サーバーが設定した強い ETag ヘッダーを保持します。
- オリジンサーバーが GZIP または Brotli で圧縮したレスポンス、または非圧縮レスポンスを返す。
- オリジンサーバーが圧縮レスポンスを返す場合、訪問者が
accept-encodingヘッダーに従い、同じ圧縮(GZIP、Brotli)を受け入れる。 - Rocket Loader と Email 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 ルールで異なる圧縮タイプを扱います。