Citrix ADC

HTTP 圧縮

圧縮可能なコンテンツを持つ Web サイトの場合、HTTP 圧縮機能は可逆圧縮を実装し、サーバーから圧縮対応ブラウザーに送信される HTTP 応答を圧縮することにより、レイテンシ、長いダウンロード時間、およびその他のネットワークパフォーマンスの問題を軽減します。計算負荷の高い圧縮タスクをサーバーからCitrix ADCアプライアンスにオフロードすることで、サーバーのパフォーマンスを向上させることができます。

次の表に、HTTP 圧縮機能の機能を示します。

機能 説明
圧縮率 圧縮率は、応答内のファイルのタイプによって異なりますが、常に重要であり、ネットワーク上で送信されるデータの量を大幅に削減します。
ブラウザ認識 Citrix ADCは、圧縮データを圧縮対応ブラウザにのみ提供し、クライアントとサーバー間のトランザクション時間を短縮します。最新のウェブブラウザのほとんどは HTTP 圧縮をサポートしています。
圧縮ブロッキング 組み込みアクションを適用して、圧縮を選択的にブロックするコンテンツフィルタを定義できます。
圧縮キャッシュ 統合キャッシュ機能を有効にすると、同じコンテンツに対する後続のリクエストがローカルキャッシュから処理されるため、サーバーへのラウンドトリップ回数が削減され、トランザクション時間が短縮されます。
HTTPS サポート 圧縮は、サーバーまたはCitrix ADCアプライアンスによって暗号化され、クライアントによって復号化されるコンテンツの量を減らすため、SSL接続で役立ちます。
インテリジェントな応答フィルタリング Citrix ADC圧縮エンジンは、定義された圧縮パラメータに基づいてサーバーの応答をインテリジェントにフィルタリングします。たとえば、圧縮エンジンは、コンテンツ長ゼロの応答と圧縮された応答を検出し、圧縮しません。圧縮された応答の検出により、オリジンサイトはCitrix ADC圧縮機能でサーバーベースの圧縮を使用できます。
圧縮スイッチング Citrix ADCアプライアンスは、圧縮対応クライアントからの要求を圧縮対応サーバーに透過的に送信するため、これらのクライアントへの応答は圧縮され、他のクライアントへの応答は圧縮処理によって遅延されません。

HTTP 圧縮のしくみ

Citrix ADCは、静的および動的に生成されたデータの両方を圧縮できます。GZIPまたはDEFLATE圧縮アルゴリズムが適用されることで、無関係で反復的な情報がサーバー応答から削除され、より簡潔で効率的な形式で元の情報が表されます。この圧縮データは、クライアントのブラウザに送信され、ブラウザがサポートするアルゴリズム(GZIP または DEFLATE)によって決定されると解凍されます。

Citrix ADC圧縮は、静的コンテンツと動的コンテンツを別々に扱います。

  • 静的ファイルは一度だけ圧縮され、圧縮されたコピーはローカルメモリに保存されます。キャッシュファイルに対する後続のクライアント要求は、そのメモリから処理されます。
  • 動的ページは、クライアントが要求するたびに動的に作成されます。

クライアントがサーバーに要求を送信すると、次のようになります。

  1. クライアント要求はCitrix ADCに到着します。ADCはヘッダーを調べ、ブラウザがサポートする圧縮の種類があればその情報を格納します。
  2. ADC は要求をサーバに転送し、応答を受信します。
  3. Citrix ADC圧縮エンジンは、ポリシーと照合することによって、サーバーの応答の圧縮性を調べます。
  4. 応答が圧縮アクションに関連付けられたポリシーと一致し、クライアントブラウザーがアクションで指定された圧縮アルゴリズムをサポートしている場合、Citrix ADCはアルゴリズムを適用し、圧縮された応答をクライアントブラウザーに送信します。
  5. クライアントは、サポートされている圧縮アルゴリズムを適用して、応答を解凍します。

HTTP 圧縮を構成する

デフォルトでは、Citrix ADCでは圧縮が無効になっています。この機能を設定する前に、この機能を有効にする必要があります。この機能が有効な場合、ADC は圧縮ポリシーで指定されたサーバー要求を圧縮します。

CLI を使用して HTTP 圧縮を有効にするには

圧縮は HTTP および SSL サービスに対してのみ有効にできます。すべての HTTP および SSL サービスに適用するようにグローバルに有効にすることも、特定のサービスに対してのみ有効にすることもできます。

コマンドプロンプトで、次のコマンドのいずれかを入力して、圧縮をグローバルに、または特定のサービスに対して有効にします。

  • enable ns feature cmp または
  • set service \<name\> -CMP YES

GUI を使用して圧縮を構成するには

次のいずれかを行います:

圧縮をグローバルに有効にするには、[システム] > [設定] に移動し、[ 基本機能の構成] をクリックして、[HTTP 圧縮] を選択します。

特定のサービスの圧縮を有効にするには、[ トラフィック管理] > [負荷分散] > [サービス] に移動し、サービスを選択して[編集] をクリックします。[設定] グループで、鉛筆アイコンをクリックし、[圧縮] を有効にします。

圧縮アクションの設定

圧縮アクションは、要求または応答が、アクションが関連付けられているポリシーのルール(式)に一致したときに実行するアクションを指定します。たとえば、特定のサーバーに送信される要求を識別する圧縮ポリシーを構成し、そのポリシーをサーバーの応答を圧縮するアクションに関連付けることができます。

4 つの組み込み圧縮アクションがあります。

  • COMPRESS: GZIP アルゴリズムを使用して、GZIP のいずれか、または GZIP と DEFLATE の両方をサポートするブラウザーからのデータを圧縮します。DEFLATE アルゴリズムを使用して、DEFLATE アルゴリズムのみをサポートするブラウザーからのデータを圧縮します。ブラウザーがどちらのアルゴリズムもサポートしていない場合、ブラウザーの応答は圧縮されません。
  • NOCOMPRESS: データを圧縮しません。
  • GZIP: GZIP アルゴリズムを使用して、GZIP 圧縮をサポートするブラウザーのデータを圧縮します。ブラウザーが GZIP アルゴリズムをサポートしていない場合、ブラウザーの応答は圧縮されません。
  • DEFLATE: DEFLATE アルゴリズムを使用して、DEFLATE アルゴリズムをサポートするブラウザーのデータを圧縮します。ブラウザーが DEFLATE アルゴリズムをサポートしていない場合、ブラウザーの応答は圧縮されません。アクションを作成したら、そのアクションを 1 つ以上の圧縮ポリシーに関連付けます。

コマンドプロンプトで、次のコマンドを入力して、圧縮アクションを作成します。

add cmp action <name> <cmpType> [-addVaryHeader <addVaryHeader> -varyHeaderValue<string>]

CLI を使用して圧縮ポリシーを設定するには

圧縮ポリシーにはルールが含まれています。ルールは、Citrix ADCアプライアンスが圧縮する必要があるトラフィックを識別できるようにする論理式です。

Citrix ADCはサーバーからHTTP応答を受信すると、組み込みの圧縮ポリシーとカスタム圧縮ポリシーを評価して、応答を圧縮するかどうか、圧縮する場合は適用する圧縮の種類を決定します。ポリシーに割り当てられた優先順位によって、ポリシーがリクエストに対して照合される順序が決まります。

コマンドプロンプトで次のコマンドを入力して、圧縮ポリシーを作成します。

add cmp policy <name> -rule <expression> -resAction <string>

GUI を使用して圧縮アクションを作成するには

[ 最適化 ] > [ HTTP 圧縮 ] > [ アクション ] に移動し、[ 追加 ] をクリックして、HTTP 応答で実行する圧縮のタイプを指定する圧縮アクションを作成します。

圧縮ポリシーを構成する

圧縮ポリシーにはルールが含まれています。ルールは、Citrix ADCアプライアンスが圧縮する必要があるトラフィックを識別できるようにする論理式です。

Citrix ADCはサーバーからHTTP応答を受信すると、組み込みの圧縮ポリシーとカスタム圧縮ポリシーを評価して、応答を圧縮するかどうか、圧縮する場合は適用する圧縮の種類を決定します。ポリシーに割り当てられた優先順位によって、ポリシーがリクエストに対して照合される順序が決まります。

次の表に、組み込みの HTTP 圧縮ポリシーを示します。これらのポリシーは、圧縮を有効にするとグローバルにアクティブ化されます。

組み込みのクラシックポリシーまたは詳細ポリシー 説明
ns_nocmp_mozilla_47, ns_adv_nocmp_mozilla_47 Mozilla 4.7 ブラウザからリクエストが送信されたときに CSS ファイルの圧縮を防止します。
ns_cmp_mscss、ns_adv_cmp_mscss Microsoft Internet Explorer ブラウザーから要求が送信されたときに CSS ファイルを圧縮します。
ns_cmp_msapp、ns_adv_cmp_msapp Microsoft Office Word、Microsoft Office Excel、Microsoft Office PowerPoint のアプリケーションによって生成されたファイルを圧縮します。
ns_cmp_content_type、ns_adv_cmp_content_type レスポンスに containsContent-type ヘッダーがあり、テキストが含まれている場合に、データを圧縮します。
ns_nocmp_xml_ie、ns_adv_nocmp_xml_ie Microsoft Internet Explorer ブラウザーから要求が送信され、応答に Content-Type ヘッダーが含まれ、テキストまたは xml が含まれている場合に、圧縮を防止します。

圧縮ポリシーのバインド

圧縮ポリシーを有効にするには、Citrix ADCを通過するすべてのトラフィックに適用されるようにグローバルにバインドするか、特定の仮想サーバーにバインドして、宛先がその仮想サーバーのVIPアドレスである要求にのみポリシーを適用する必要があります。

ポリシーをバインドするときは、そのポリシーにプライオリティを割り当てます。プライオリティによって、定義したポリシーが評価される順序が決まります。優先度は、任意の正の整数に設定できます。

CLI を使用して圧縮ポリシーをバインドするには

コマンドプロンプトで、次のいずれかのコマンドを入力して、圧縮ポリシーをグローバルに、または特定の仮想サーバーにバインドします。

  • bind cmp global <policyName> [-priority <positive_integer>] [-state (ENABLED|DISABLED)]
  • bind lb vserver <vserverName> -policyName <policyName> -priority <positive_integer>

圧縮ポリシーをバインドする仮想サーバごとに、このコマンドを繰り返します。

GUI を使用して圧縮ポリシーをバインドするには

次のいずれかを行います:

グローバルレベルで [ 最適化 ] > [ HTTP圧縮 ] > [ ポリシー] に移動し、[ ポリシーマネージャ ] をクリックし、関連するバインドポイントと接続タイプ(要求/応答)を指定して、必要なポリシーをバインドします。

仮想サーバレベル

負荷分散仮想サーバーの場合は、[ トラフィック管理 ] > [ 負荷分散 ] > [ 仮想サーバー] に移動し、必要な仮想サーバーを選択し、[ ポリシー] をクリックして、関連するポリシーをバインドします。

コンテンツスイッチ仮想サーバーの場合は、[ トラフィック管理] > [コンテンツスイッチング] > [仮想サーバー] に移動し、必要な仮想サーバーを選択し、[ ポリシー] をクリックして、関連するポリシーをバインドします。

最適なパフォーマンスを得るためのグローバル圧縮パラメータの設定

多くのユーザーはグローバル圧縮パラメータのデフォルト値を受け入れますが、これらの設定をカスタマイズすることで、より効果的な圧縮を提供できる場合があります。

(注 )グローバル圧縮パラメータを設定した後は、アプライアンスをリブートする必要はありません。新しいフローに直ちに適用されます。

次の表では、Citrix ADCで設定できる圧縮パラメータについて説明します。

圧縮パラメータ 説明
量子サイズ サーバー応答を累積するために維持されるバッファのサイズ(KB 単位)。バッファサイズがこの値を超えると、応答は圧縮されます。たとえば、量子サイズを50 KBに設定すると、Citrix ADCはバッファのサイズが50 KBを超えるとバッファの内容を圧縮します。最小値:1。最大値:63488 デフォルト:57344。
圧縮レベル サーバー応答に適用する圧縮レベル。可能な値:[最高速度]、[最高の圧縮]、[最適]。
HTTP 応答の最小サイズ 圧縮される HTTP 応答の最小サイズ(バイト単位)。このパラメータで指定された値より小さいレスポンスは、圧縮されずに送信されます。
CPU 使用率で圧縮をバイパスする Citrix ADC CPU使用率(パーセンテージ)で、それ以上では圧縮が行われません。デフォルトは 100 です。
ポリシータイプ* 圧縮に使用されるポリシーのタイプ。指定可能な値:クラシック、高度なポリシー。デフォルト:クラシック。
サーバー側の圧縮を許可する サーバーが圧縮データをCitrix ADCに送信できるようにします。
プッシュパケットを圧縮する TCP PUSH フラグの付いたパケットを受信したら、量子バッファがいっぱいになるのを待たずに、蓄積されたパケットをただちに圧縮します。
外部キャッシュ プライベートレスポンスディレクティブを発行して、レスポンスメッセージが単一のユーザーを対象としており、共有キャッシュまたはプロキシキャッシュによってキャッシュされてはならないことを示します。

GUI を使用して HTTP 圧縮を設定するには

次のいずれかを行います:

  • 圧縮をグローバルに有効にするには、[システム] > [設定] に移動し、[基本機能の構成] をクリックして、[HTTP 圧縮] を選択します。
  • 特定のサービスの圧縮を有効にするには、[トラフィック管理] > [負荷分散] > [サービス] に移動し、サービスを選択して[編集] をクリックします。
  • [設定] グループで、鉛筆アイコンをクリックし、[圧縮] を有効にします。

GUI を使用して圧縮アクションを作成するには

[最適化] > [HTTP 圧縮] > [アクション] に移動し、[追加] をクリックして、HTTP 応答で実行する圧縮のタイプを指定する圧縮アクションを作成します。

GUI を使用して圧縮ポリシーを作成するには

[最適化] > [HTTP 圧縮] > [ポリシー] に移動し、[追加] をクリックし、実行する条件と対応するアクションを指定して圧縮ポリシーを作成します。

圧縮構成の評価

圧縮統計は、ダッシュボードユーティリティまたは SNMP モニタで表示できます。ダッシュボードユーティリティは、サマリーおよび詳細な統計を表形式およびグラフィック形式で表示します。

オプションで、ポリシーベースの圧縮中にポリシーカウンタが増加する要求の数など、圧縮ポリシーの統計情報を表示することもできます。

CLI を使用して圧縮統計を表示するには

コマンドプロンプトで次のコマンドを入力して、圧縮統計情報を表示します。

  1. 圧縮統計のサマリーを表示します。

    stat cmp

    (注 )stat cmp policy コマンドは、高度なポリシー圧縮ポリシーの統計情報だけを表示します。

  2. 圧縮ポリシーのヒットと詳細を表示するには          show cmp policy \<name\>

  3. 詳細な圧縮統計情報を表示するには          stat cmp -detail

ダッシュボードを使用して圧縮統計を表示するには、次の手順を実行します。

ダッシュボードユーティリティでは、次のタイプの圧縮統計を表示できます。

  • [圧縮(Compression)] を選択して、圧縮統計のサマリーを表示します。
  • プロトコルタイプ別の詳細な圧縮統計情報を表示するには、[Details] をクリックします。
  • 圧縮機能によって処理された要求の割合を表示するには、[Graphical View] タブをクリックします。

SNMP を使用して圧縮統計情報を表示するには

SNMP ネットワーク管理アプリケーションを使用すると、次の圧縮統計情報を表示できます。

  • 圧縮要求の数 (OID: 1.3.6.1.4.1.5951.4.1.1.50.1)
  • 送信された圧縮バイト数(OID:1.3.6.1.4.1.5951.4.1.1.50.2)
  • 受信した圧縮可能なバイト数(OID:1.3.6.1.4.1.5951.4.1.1.50.3)
  • 送信された圧縮可能なパケットの数(OID:1.3.6.1.4.1.5951.4.1.1.50.4)
  • 受信された圧縮可能なパケットの数(OID:1.3.6.1.4.1.5951.4.1.1.50.5)
  • 圧縮可能なデータの受信データと送信された圧縮データの比率 (OID: 1.3.6.1.4.1.5951.4.1.4.1.50.6)
  • 送信されたデータ合計に対する受信データの合計の比率(OID:1.3.6.1.4.1.5951.4.1.1.50.7)

GUI を使用して圧縮統計をさらに表示するには

  1. HTTP 圧縮統計情報を表示するには、次の手順を実行します。

[ 最適化 ] > [HTTP 圧縮] に移動し、[統計] をクリックします。

  1. 圧縮ポリシーの統計情報を表示します。

[最適化 ] > [HTTP 圧縮 ] > [ポリシー ] に移動し、ポリシーを選択し、[ 統計] をクリックします。

  1. 圧縮ポリシーラベルの統計情報を表示するには

  2. [最適化 ] > [HTTP 圧縮 ] > [ポリシー ] に移動し、ポリシーラベルを選択し、[ 統計] をクリックします。

HTTP 圧縮のオフロード

サーバーで圧縮を実行すると、サーバーのパフォーマンスに影響する可能性があります。Webサーバーの前に配置され、HTTP圧縮用に構成されたCitrix ADCは、静的コンテンツと動的コンテンツの両方の圧縮をオフロードし、サーバーのCPUサイクルとリソースを節約します。

Web サーバーから圧縮をオフロードするには、次の 2 つの方法があります。

Webサーバーで圧縮を無効にし、Citrix ADC圧縮機能をグローバルレベルで有効にし、圧縮用のサービスを構成します。

Webサーバーで圧縮機能を有効にしたままにし、すべてのHTTPクライアント要求から「Accept Encoding」ヘッダーを削除するようにCitrix ADCアプライアンスを構成します。その後、サーバーは圧縮されていないレスポンスを送信します。Citrix ADCは、サーバー応答をクライアントに送信する前に圧縮します。

注: サーバーがすべての応答を自動的に圧縮する場合、2 番目のオプションは機能しません。Citrix ADCは、すでに圧縮されている応答を圧縮しようとしません。

Servercmp パラメーターにより、Citrix ADCアプライアンスはオフロードHTTP圧縮を処理できます。デフォルトでは、このパラメータは、サーバーが圧縮データをCitrix ADCアプライアンスに送信するためにオンに設定されています。HTTP 圧縮をオフロードするには、servercmp パラメーターを OFF に設定する必要があります。コマンドプロンプトで、次のコマンドを入力します。

set service <service name> -CMP YES

圧縮を有効にするサービスごとに、このコマンドを繰り返します。

show service <service name>

サービスごとにこのコマンドを繰り返して、圧縮が有効になっていることを確認します。

Save config

set cmp parameter –serverCmp OFF

注:

Servercmpパラメータがオンになっており、アプライアンスがサーバーから圧縮された応答を受信した場合、アプライアンスはデータをそれ以上圧縮しません。代わりに、圧縮された応答をクライアントに転送します。

HTTP 圧縮