Skip to content

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

コンテンツ圧縮

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

Cloudflare は、Cloudflare とウェブサイト訪問者のあいだと、Cloudflare とオリジンサーバーのあいだの 2 通りでコンテンツを圧縮します。

Cloudflare とウェブサイト訪問者のあいだの圧縮

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+json

Cloudflare のグローバルネットワークは、次に応じて、Gzip 圧縮、Brotli 圧縮、Zstandard 圧縮、または非圧縮でウェブサイト訪問者へコンテンツを配信できます。

  • 訪問者が accept-encoding リクエストヘッダーで指定した値。
  • Cloudflare プラン
  • 受信リクエストに一致する、設定済みの 圧縮ルール

エラーステータスコードのレスポンスでは、ステータスコードが 403 または 404 の場合だけ圧縮します。成功レスポンスでは、ステータスコードが 200 の場合だけ圧縮します。ほかのステータスコードのレスポンスは圧縮しません。

Compression Rules を使うと、Cloudflare のデフォルトの圧縮動作を上書きできます。

Content-Length ヘッダーの扱い

Cloudflare が訪問者へ送るレスポンスを圧縮する場合、動的な変換によって誤った長さ情報が届くのを避けるため、Content-Length HTTP ヘッダーを省略することがあります。オリジンサーバーが設定した Content-Length ヘッダーを維持するには、オリジンサーバーのレスポンスに cache-control: no-transform を追加します。このディレクティブにより、Cloudflare はレスポンスの圧縮を変更しなくなり、Content-Length ヘッダーはそのまま通過します。cache-control: no-transform ヘッダーはオリジン側で設定する必要があります。クライアントリクエストでは追加できません。


オリジンサーバーから Cloudflare ネットワークへのコンテンツ圧縮

オリジンサーバーへコンテンツを要求するとき、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 はレスポンスを展開してから再び圧縮します。

特定の URI パスでこれらの設定を無効にするには、Configuration Rule を作成します。

Content-Length ヘッダー

Cloudflare は、ウェブサイト訪問者へ届けるレスポンスから Content-Length HTTP ヘッダーを削除することがあります。ヘッダーを維持するには、オリジンサーバーのレスポンスに cache-control: no-transform HTTP ヘッダーを追加します。

プラン別の圧縮方式

訪問者と Cloudflare のあいだ

デフォルトでは、ゾーンのプランに応じて次の圧縮方式でコンテンツを配信します。実際に適用される圧縮は、訪問者のブラウザーが accept-encoding ヘッダーで要求する内容にも依存します。

  • Free プラン: デフォルトで Zstandard により圧縮します。
  • Pro プランと Business プラン: デフォルトで Brotli により圧縮します。
  • Enterprise プラン: デフォルトで Gzip により圧縮します。

Cloudflare とオリジンサーバーのあいだ

すべてのプランで、Cloudflare は accept-encoding: br, gzip ヘッダーを使ってオリジンサーバーへコンテンツを要求します。オリジンが対応している方式に応じて、Brotli または Gzip で圧縮したコンテンツを送るよう求めます。

役に立ちましたか?