Cloudflare は、Cloudflare とウェブサイト訪問者のあいだと、Cloudflare とオリジンサーバーのあいだの 2 通りでコンテンツを圧縮します。
Cloudflare の デフォルトのキャッシュ動作 に加え、Cloudflare はウェブサイト訪問者へコンテンツを配信するとき、Gzip、Brotli、Zstandard 圧縮に対応します。
訪問者の Web ブラウザーが対応している場合、Cloudflare は次のコンテンツタイプに対して Gzip、Brotli、または Zstandard でエンコードしたレスポンスを返します。
text/html
text/richtext
text/plain
text/css
text/x-script
text/x-component
text/x-java-source
text/x-markdown
application/javascript
application/x-javascript
text/javascript
text/js
image/x-icon
image/vnd.microsoft.icon
application/x-perl
application/x-httpd-cgi
text/xml
application/xml
application/rss+xml
application/vnd.api+json
application/x-protobuf
application/json
multipart/bag
multipart/mixed
application/xhtml+xml
font/ttf
font/otf
font/x-woff
image/svg+xml
application/vnd.ms-fontobject
application/ttf
application/x-ttf
application/otf
application/x-otf
application/truetype
application/opentype
application/x-opentype
application/font-woff
application/eot
application/font
application/font-sfnt
application/wasm
application/javascript-binast
application/manifest+json
application/ld+json
application/graphql+json
application/geo+jsonCloudflare のグローバルネットワークは、次に応じて、Gzip 圧縮、Brotli 圧縮、Zstandard 圧縮、または非圧縮でウェブサイト訪問者へコンテンツを配信できます。
- 訪問者が
accept-encodingリクエストヘッダーで指定した値。 - Cloudflare プラン。
- 受信リクエストに一致する、設定済みの 圧縮ルール。
エラーステータスコードのレスポンスでは、ステータスコードが 403 または 404 の場合だけ圧縮します。成功レスポンスでは、ステータスコードが 200 の場合だけ圧縮します。ほかのステータスコードのレスポンスは圧縮しません。
Compression Rules を使うと、Cloudflare のデフォルトの圧縮動作を上書きできます。
Cloudflare が訪問者へ送るレスポンスを圧縮する場合、動的な変換によって誤った長さ情報が届くのを避けるため、Content-Length HTTP ヘッダーを省略することがあります。オリジンサーバーが設定した Content-Length ヘッダーを維持するには、オリジンサーバーのレスポンスに cache-control: no-transform を追加します。このディレクティブにより、Cloudflare はレスポンスの圧縮を変更しなくなり、Content-Length ヘッダーはそのまま通過します。cache-control: no-transform ヘッダーはオリジン側で設定する必要があります。クライアントリクエストでは追加できません。
オリジンサーバーへコンテンツを要求するとき、Cloudflare は Brotli 圧縮、Gzip 圧縮、または非圧縮に対応します。
flowchart LR accTitle: オリジンサーバーから送られる圧縮レスポンス accDescr: Cloudflare は、Brotli 圧縮、Gzip 圧縮、または非圧縮のレスポンスをオリジンサーバーから受け取ります。 A[訪問者のブラウザー] B((Cloudflare)) C[(オリジンサーバー)] A -.-> B == "リクエスト<br>Accept-Encoding: br, gzip" ==> C C == "レスポンス<br>(Brotli / Gzip / 非圧縮)" ==> B -.-> A style A stroke-dasharray: 5 5 style B stroke: orange,fill: orange,color: black style C stroke-width: 2px linkStyle 1,2 stroke-width: 2px linkStyle 0,3 stroke-width: 1px
オリジンサーバーが Cloudflare のリクエストに Brotli / Gzip 圧縮で応答した場合、次の条件を満たすとき、ウェブサイト訪問者へ送るレスポンスでも同じ圧縮を維持します。
- サーバーレスポンスに、使っている圧縮(
brまたはgzip)を示すcontent-encodingヘッダーを含める。 - 訪問者のブラウザー(またはクライアント)がその圧縮アルゴリズムに対応している。
- レスポンス内容を変える Cloudflare 機能を有効にしていない(詳細は エンドツーエンド圧縮に関する注意 を参照)。
Cloudflare のリバースプロキシは、圧縮形式と非圧縮形式のあいだでも変換できます。Cloudflare は、オリジンサーバーから Brotli または Gzip で圧縮されたコンテンツを受け取り、訪問者へ非圧縮で配信できます(その逆も同様です)。キャッシュの有無とは独立しています。
オリジンからの特定のレスポンスを、ウェブサイト訪問者へ届けるときに Brotli / Gzip でエンコードしたくない場合は、オリジン Web サーバーのレスポンスに cache-control: no-transform HTTP ヘッダーを含めます。
エンドツーエンドで同じ圧縮アルゴリズムを使っている場合(オリジンサーバーと Cloudflare のあいだ、および Cloudflare グローバルネットワークとウェブサイト訪問者のあいだ)でも、リクエストに対して次のいずれかの設定を有効にしていると、Cloudflare はレスポンスを展開してから再び圧縮します。
- Automatic HTTPS Rewrites
- Cloudflare Fonts
- Email Address Obfuscation
- Polish
- Rocket Loader
- JavaScript detections
- RUM
特定の URI パスでこれらの設定を無効にするには、Configuration Rule を作成します。
Cloudflare は、ウェブサイト訪問者へ届けるレスポンスから Content-Length HTTP ヘッダーを削除することがあります。ヘッダーを維持するには、オリジンサーバーのレスポンスに cache-control: no-transform HTTP ヘッダーを追加します。
デフォルトでは、ゾーンのプランに応じて次の圧縮方式でコンテンツを配信します。実際に適用される圧縮は、訪問者のブラウザーが accept-encoding ヘッダーで要求する内容にも依存します。
- Free プラン: デフォルトで Zstandard により圧縮します。
- Pro プランと Business プラン: デフォルトで Brotli により圧縮します。
- Enterprise プラン: デフォルトで Gzip により圧縮します。
すべてのプランで、Cloudflare は accept-encoding: br, gzip ヘッダーを使ってオリジンサーバーへコンテンツを要求します。オリジンが対応している方式に応じて、Brotli または Gzip で圧縮したコンテンツを送るよう求めます。