機能概要
コンテンツ圧縮機能は智能圧縮のアップグレード版であり、HOST以外のより多くのマッチング条件をサポートしています。コンテンツ圧縮を有効にすると、EdgeOneはクライアントリクエストヘッダーにAccept-Encoding:br,gzipまたはAccept-Encoding:brまたはAccept-Encoding:gzipが含まれている場合、ノードはファイルのContent-Typeに基づいてインテリジェント圧縮を実行します。圧縮後のファイルはリソースサイズを効果的に削減し、コンテンツの転送速度を向上させることができます。 説明:
コンテンツ圧縮は許可リスト機能です。ご利用が必要な場合は、お問い合わせください。 コンテンツ圧縮機能は現在、有効化のみをサポートしており、無効化はサポートしていません。
コンテンツ圧縮はHOST、ファイル拡張子、HTTPレスポンスヘッダーContent-Typeなどのマッチング条件をサポートしています。HTTPレスポンスヘッダーContent-Typeをマッチング条件として使用する場合、Content-Typeリストを1つのIFルールに記述する必要があります。複数のIFを設定した場合、一番下のIFルールが上のルールを上書きし、最終的に一番下のIFルールのみが有効になります。
コンテンツ圧縮とスマート圧縮を同時に設定した場合、コンテンツ圧縮の優先度がより高くなります。
操作手順
シナリオ1:特定のファイル拡張子に基づくコンテンツ圧縮の有効化
ドメインwww.example.com配下のファイル拡張子html、htm、xhtmlに対してコンテンツ圧縮を有効にする必要がある場合は、以下の手順を参照してください。
1. EdgeOneコンソールにログインし、左側のメニューバーで「サービス概要」に入り、「Webサイト安全な加速」内で設定が必要なサイトをクリックします。
2. サイト詳細ページで「サイト加速」をクリックし、サイト全体設定ページに入り、「ルールエンジン」タブをクリックします。
3. ルールエンジンページで「ルールを作成」をクリックし、「新しい空白のルールを追加」を選択します。
4. ルール編集ページで、マッチングタイプとしてHOSTがwww.example.comに等しいことを選択し、同時にファイル拡張子がhtml、htm、xhtmlに等しいことを設定します。
5. 「操作」>「選択ボックス」をクリックし、表示された操作リストで操作として「コンテンツ圧縮」を選択します。
シナリオ2:特定のファイルContent-Typeに基づくコンテンツ圧縮の有効化
ドメインwww.example.com配下のファイルContent-Type: application/graphql+jsonに対してコンテンツ圧縮を有効にする必要がある場合は、以下の手順を参照してください。
1. EdgeOneコンソールにログインし、左側のメニューバーで「サービス概要」に入り、「Webサイト安全な加速」内で設定が必要なサイトをクリックします。
2. サイト詳細ページで「サイト加速」をクリックし、サイト全体設定ページに入り、「ルールエンジン」タブをクリックします。
3. ルールエンジンページで「ルールを作成」をクリックし、「新しい空白のルールを追加」を選択します。
4. ルール編集ページで、外側のIFのマッチングタイプとしてHOSTがwww.example.comに等しいことを選択し、同時に内側のIFでHTTPレスポンスヘッダー名をContent-Type、値をapplication/graphql+jsonに等しく設定します。
5. 「操作」>「選択ボックス」をクリックし、表示された操作リストで操作として「コンテンツ圧縮」を選択します。
関連参考
コンテンツ圧縮の有効化ルール
1. コンテンツ圧縮がサポートするファイルサイズ(Content-Length)の範囲:256B - 30MB。
2. オリジンサーバーのレスポンスがTransfer-Encoding: chunkedの場合、データはストリーミングでチャンク転送されるため、EdgeOneノードは完全なレスポンスを受信する前にファイルの合計サイズを把握できません。「256B - 30MB」というファイルサイズ判定ルールとパフォーマンス上の考慮により、ノードは同期転送中にリアルタイム圧縮を行いません。後続のリクエストでは、キャッシュされたリソースに基づいて圧縮できます。
3. コンテンツ圧縮は同期圧縮であり、オリジンサーバーからファイルを取得すると同時にファイルを圧縮します。圧縮ファイルが初めてリクエストされた場合、ノードは圧縮済みファイルを直接応答できます。
4. コンテンツ圧縮はGzip圧縮とBrotli圧縮を同時に有効にします。クライアントリクエストヘッダーAccept-Encodingにbrとgzipの両方が含まれている場合:
ノード内にすでにキャッシュコンテンツが存在する場合、以下のルールに従って応答します:
ノードにBrotliとgzip圧縮のキャッシュコンテンツが同時に存在する場合、Brotli圧縮が優先的に応答されます。
ノードにBrotli圧縮のキャッシュコンテンツのみが存在する場合、Brotli圧縮が優先的に応答されます。
ノードにgzip圧縮のキャッシュコンテンツのみが存在する場合、Gzip圧縮が優先的に応答されます。
ノード内にキャッシュコンテンツが存在しない場合、Brotli圧縮が優先的に応答されます。
5. オリジンサーバーで圧縮機能が有効になっており、かつサーバーがレスポンスヘッダーContent-Encodingを返す場合、コンテンツ圧縮機能は有効になりません。
6. ノードはオリジンサーバーのレスポンスヘッダー内のContent-Encodingに基づいて、対応する圧縮バージョンを判断してキャッシュします。そのため、オリジンサーバーはリクエストヘッダーAccept-Encodingに厳密に従って対応するエンコードを返すことを推奨します。リクエストにAccept-Encodingが含まれていないにもかかわらず、オリジンサーバーがgzipコンテンツを返した場合、そのコンテンツはノードにgzipバージョンとしてキャッシュされます。その後、同様にAccept-Encodingを含まないリクエストに対しては、ノードに非圧縮バージョンのキャッシュが存在しないため、オリジンサーバーへ透過的に転送して処理することしかできません。このシナリオに対しては、オリジンサーバーの圧縮動作を規範化することを推奨します。リクエストにAccept-Encodingが含まれていない場合は非圧縮コンテンツを返すか、またはオリジンサーバーの圧縮を無効にして、EdgeOne側でスマート圧縮を有効にしてください。
リクエスト例
スマート圧縮とコンテンツ圧縮が有効になっていません。
初回リクエストでgzip圧縮ファイルを要求し、ノードキャッシュにヒットしなかった場合、オリジンサーバーから元のファイルを取得してノードにキャッシュし、EdgeOneが元のファイルを応答します: コンテンツ圧縮を有効にします。
初回リクエストでgzip圧縮ファイルを要求し、ノードキャッシュにヒットしなかった場合、オリジンサーバーからファイルを取得し、ノードが同期圧縮して圧縮後のファイルをキャッシュし、EdgeOneが圧縮ファイルを応答します:
スマート圧縮はchunkストリーミング圧縮をサポートしています。リクエストがノードキャッシュにヒットしない場合、オリジンサーバーからファイルを取得した後、chunk方式で応答します。 再度リクエストし、ノードのgzip圧縮ファイルのキャッシュにヒットした場合、ノードは圧縮ファイルを直接応答します。