機能概要
EdgeOneはデフォルトでグローバルにGzipまたはBrotli圧縮を有効にしています。クライアントリクエストヘッダーにAccept-Encoding:br,gzip、またはAccept-Encoding:br、またはAccept-Encoding:gzipが含まれている場合、ノードはファイルのContent-Typeに基づいてインテリジェント圧縮を実行します。圧縮後のファイルはリソースサイズを効果的に削減し、コンテンツの転送速度を向上させることができます。インテリジェント圧縮を有効にすると、次のことが可能になります:
1. ユーザーエクスペリエンスの向上:リソースサイズを削減することで、Webページの読み込み速度を大幅に向上させ、より良いユーザーエクスペリエンスを提供できます。特にCSS、JavaScriptなどのリソースを多く含むWebサイトでは、圧縮を有効にすることで読み込み時間を大幅に短縮できます。
2. トラフィックの節約:圧縮後のリソースはより少ないネットワークトラフィックを消費するため、運用コストの削減に役立ちます。
操作手順
説明:
デフォルトでは、この設定を変更する必要はありません。特定のシナリオでは、例えば:現在のクライアントがファイルのMD5検証を行う場合、または現在のクライアントが指定された圧縮ファイルの解析をサポートしていない場合、現在のサイトでBrotli圧縮のみを使用するか、Gzip圧縮のみを使用するか、または圧縮を行わないことを希望する場合は、以下の手順を参照して操作できます。
シナリオ1:サイトの全ドメインでスマート圧縮を有効/無効にする
アクセスポイント全体に対してインテリジェント圧縮を有効化または無効化する必要がある場合は、以下の手順を参照してください:
1. EdgeOneコンソールにログインし、左側のメニューバーで「サービス概要」に入り、「Webサイト安全な加速」内で設定が必要なサイトをクリックします。
2. サイト詳細ページで「サイト加速」をクリックし、サイト全体設定ページに入り、右側のナビゲーションバーで「ファイル最適化」をクリックします。
3. スマート圧縮設定カードを見つけます。デフォルトではすべて有効な状態です。スイッチをクリックして、有効化または無効化を設定できます。
シナリオ2:指定ドメインに対してスマート圧縮を有効/無効にする
指定されたドメインに対してのみスマート圧縮を有効化または無効化する必要がある場合は、以下の手順を参照してください:
1. EdgeOneコンソールにログインし、左側のメニューバーで「サービス概要」に入り、「Webサイト安全な加速」内で設定が必要なサイトをクリックします。
2. サイト詳細ページで「サイト加速」をクリックし、サイト全体設定ページに入り、「ルールエンジン」タブをクリックします。
3. ルールエンジンページで「ルールを作成」をクリックし、「新しい空白のルールを追加」を選択します。
4. ルール編集ページで、指定されたドメインのリクエストをマッチングするために、Hostマッチングタイプを選択します。
5. 「操作」>「選択ボックス」をクリックし、表示された操作リストで操作として「スマート圧縮」を選択し、「スイッチ」をクリックしてGzipまたはBrotli圧縮を有効化または無効化します。
6. 「保存して公開」をクリックすると、このルールの設定が完了します。
関連参考
スマート圧縮の有効化ルール
1. スマート圧縮がサポートするファイルサイズ(Content-Length)の範囲:256B - 30MB。
2. オリジンサーバーのレスポンスがTransfer-Encoding: chunkedの場合、データはストリーミングでチャンク転送されるため、EdgeOneノードは完全なレスポンスを受信する前にファイルの合計サイズを把握できません。「256B - 30MB」というファイルサイズ判定ルールとパフォーマンス上の考慮により、ノードは同期転送中にリアルタイム圧縮を行いません。後続のリクエストでは、キャッシュされたリソースに基づいて圧縮できます。
3. スマート圧縮は同期圧縮であり、オリジンサーバーからファイルを取得すると同時にファイルを圧縮します。圧縮ファイルが初めてリクエストされた場合、ノードは圧縮済みファイルを直接応答できます。
4. スマート圧縮はデフォルトでContent-Typeに基づいて圧縮し、以下のタイプをサポートします:
text/html
text/xml
text/plain
text/css
text/javascript
application/json
application/javascript
application/x-javascript
application/rss+xml
application/xmltext
image/svg+xml
image/tiff
text/richtext
text/x-script
text/x-component
text/x-java-source
text/x-markdown
text/js
image/x-icon
image/vnd.microsoft.icon
application/x-perl
application/x-httpd-cgi
application/xml
application/xml+rss
application/vnd.api+json
application/x-protobuf
multipart/bag
multipart/mixed
application/xhtml+xml
font/ttf
font/otf
font/x-woff
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
5. 現在Gzip圧縮とBrotli圧縮の両方を有効にしており、かつクライアントリクエストヘッダーAccept-Encodingにbrとgzipの両方が含まれている場合:
ノード内にすでにキャッシュコンテンツが存在する場合、以下のルールに従って応答します:
ノードにBrotliとgzip圧縮のキャッシュコンテンツが同時に存在する場合、Brotli圧縮が優先的に応答されます。
ノードにBrotli圧縮のキャッシュコンテンツのみが存在する場合、Brotli圧縮が優先的に応答されます。
ノードにgzip圧縮のキャッシュコンテンツのみが存在する場合、Gzip圧縮が優先的に応答されます。
ノード内にキャッシュコンテンツが存在しない場合、Brotli圧縮が優先的に応答されます。
6. Brotli圧縮のみを有効にしている場合、リクエストの圧縮ヘッダーがgzipのときは圧縮が有効にならず、元のリソースが返されます。Gzip圧縮のみを有効にしている場合、リクエストの圧縮ヘッダーがbrのときは圧縮が有効にならず、元のリソースが返されます。
7. オリジンサーバーで圧縮機能が有効になっており、かつサーバーがレスポンスヘッダーContent-Encodingを返す場合、スマート圧縮機能は有効になりません。
8. ノードはオリジンサーバーのレスポンスヘッダー内のContent-Encodingに基づいて、対応する圧縮バージョンを判断してキャッシュします。そのため、オリジンサーバーはリクエストヘッダーAccept-Encodingに厳密に従って対応するエンコードを返すことを推奨します。リクエストにAccept-Encodingが含まれていないにもかかわらず、オリジンサーバーがgzipコンテンツを返した場合、そのコンテンツはノードにgzipバージョンとしてキャッシュされます。その後、同様にAccept-Encodingを含まないリクエストに対しては、ノードに非圧縮バージョンのキャッシュが存在しないため、オリジンサーバーへ透過的に転送して処理することしかできません。このシナリオに対しては、オリジンサーバーの圧縮動作を規範化することを推奨します。リクエストにAccept-Encodingが含まれていない場合は非圧縮コンテンツを返すか、またはオリジンサーバーの圧縮を無効にして、EdgeOne側でスマート圧縮を有効にしてください。
リクエスト例
スマート圧縮が有効になっていません。
初回リクエストでgzip圧縮ファイルを要求し、ノードキャッシュにヒットしなかった場合、オリジンサーバーから元のファイルを取得してノードにキャッシュし、EdgeOneが元のファイルを応答します:
スマート圧縮を有効にします。
初回リクエストでgzip圧縮ファイルを要求し、ノードキャッシュにヒットしなかった場合、オリジンサーバーからファイルを取得し、ノードが同期圧縮して圧縮後のファイルをキャッシュし、EdgeOneが圧縮ファイルを応答します:
スマート圧縮はchunkストリーミング圧縮をサポートしています。リクエストがノードキャッシュにヒットしない場合、オリジンサーバーからファイルを取得した後、chunk方式で応答します。
再度リクエストし、ノードのgzip圧縮ファイルのキャッシュにヒットした場合、ノードは圧縮ファイルを直接応答します。