NSX Advanced Load Balancer は HTTP コンテンツをキャッシュするため、クライアントのページ ロード時間を短縮し、サーバと NSX Advanced Load Balancer の両方のワークロードを軽減できます。

サーバから応答(logo.png など)を送信すると、NSX Advanced Load Balancer ではオブジェクトをその HTTP キャッシュに追加します。キャッシュしたオブジェクトは、同じオブジェクトを要求する後続のクライアントに提供します。キャッシュにより、サーバに送信される接続と要求の数が減少します。



キャッシュと圧縮を有効にすると、NSX Advanced Load Balancer はテキストベースのオブジェクトを圧縮し、圧縮されたバージョンと圧縮されていない元のバージョンの両方をキャッシュに保存できます。圧縮をサポートするクライアントからの後続の要求は、キャッシュから処理されます。NSX Advanced Load Balancer では、すべてのオブジェクトを毎回圧縮する必要がないため、圧縮のワークロードが大幅に軽減されます。

キャッシュの対象となる応答

キャッシュが有効になっている場合、NSX Advanced Load Balancer は次のタイプの応答の HTTP オブジェクトをキャッシュします。

  • HTTP/HTTPS

  • GET、HEAD メソッド

  • 200 状態コード

NSX Advanced Load Balancer は、HTTPS プール内のサーバからのオブジェクトのキャッシュもサポートします。

注:
  • キャッシュされるのは、サーバからの HTTP/2 応答です。

  • HTTP キャッシュ機能は、NSX Advanced Load Balancer のプール グループではサポートされていません。

キャッシュされない応答

NSX Advanced Load Balancer は、次のタイプの応答の HTTP オブジェクトはキャッシュしません。

  • Put/Post/Delete メソッド

  • 要求ヘッダー:

    • Cache-Control: no-store

    • 認可

  • 応答ヘッダー:

    • Cache-Control: no-cache

    • Expires ヘッダーの日付がすでに期限切れ

    • Warning、Set-Cookie、Vary: *

    • Cache-Control: private、no-store

    • etag ヘッダーと Last-Modified ヘッダーの両方が存在せず、次のいずれかになる

    • GET/HEAD メソッドにクエリが含まれている

    • expires/max-age ヘッダーが存在しない

  • 200 以外の状態コード

注:

仮想サービスに存在するポリシーや DataScript では、キャッシュが動作しない可能性があります。ポリシーや DataScript を仮想サービスに適用する必要がある場合は、アプリケーション プロファイルでキャッシュを無効化することを検討してください。

キャッシュから提供されるオブジェクトの検証

オブジェクトがキャッシュから正常に提供されたことを検証するには、仮想サービスのログ ページに移動します。フィルタを適用します (cache_hit= ”true”)。こうすると、キャッシュから正常に提供された要求がすべてフィルタリングされます。ログを使用する場合は、重要でないログ を有効化してエラー以外のトラフィックが表示されるようにし、テスト時には重要でないログがログ エンジンでキャプチャされるようにします。詳細については、『VMware NSX Advanced Load Balancer 監視および運用性ガイド』の「仮想サービス アプリケーション ログ」を参照してください。

キャッシュ サイズ



キャッシュのサイズは、キャッシュが有効になっている仮想サービスを処理するサービス エンジンのメモリ割り当てに基づいて間接的に決定されます。これは SE グループのプロパティ内で、接続メモリ スライダ経由で決定されます。バッファに割り当てられたメモリは、TCP バッファリング(したがって高速化される)、HTTP 要求と応答バッファリング、および HTTP キャッシュにも使用されます。

キャッシュ構成オプション

HTTP キャッシュを有効化するのは、[タイプ] HTTP のアプリケーション プロファイル内です。

[テンプレート ] > [プロファイル ] > [アプリケーション ] > [作成] の順に移動します。[タイプ][HTTP] を選択します。

HTTP プロファイル内で、[キャッシュ] タブに移動し、[キャッシュを有効化] チェック ボックスをオンにしてキャッシュを有効化します。

次に示すオプションのパラメータを構成します。

  • [X-Cache] - NSX Advanced Load Balancer では、キャッシュから提供されクライアントに送信された応答に対して、X-Cache というラベルの HTTP ヘッダーを追加します。本来このヘッダーは情報提供目的であり、オブジェクトが中間キャッシュから提供されたことを示します。

  • [Age ヘッダー] - NSX Advanced Load Balancer では、キャッシュから提供されるコンテンツに、オブジェクトが中間キャッシュにある秒数をクライアントに示すヘッダーを追加します。たとえば、元のサーバで、オブジェクトは 10 分後に期限切れとなると宣言していて、そのオブジェクトが NSX Advanced Load Balancer キャッシュに 5 分間存在している場合、クライアントでは、オブジェクトをローカルでさらに 5 分間のみキャッシュしなければならないことを認識します。

  • [Date ヘッダー] - Date ヘッダーがサーバによって追加されなかった場合、NSX Advanced Load Balancer では、その HTTP キャッシュから提供されるオブジェクトに Date ヘッダーを追加します。このヘッダーからクライアントに、オブジェクトがサーバによって NSX Advanced Load Balancer の HTTP キャッシュに最初に送信された日時を示します。

  • [キャッシュ可能オブジェクトのサイズ] - キャッシュされるオブジェクトの最小サイズと最大サイズ(バイト単位)。100 バイト未満のほとんどのオブジェクトは Web ビーコンであり、画像オブジェクトではあってもキャッシュされてはならないものです。ストリーミング ビデオなどの大きなオブジェクトは、キャッシュはできますが適切ではなく、キャッシュ サイズがすぐに飽和する可能性があります。

  • [キャッシュの有効期限] - 中間キャッシュは、古くなったコンテンツを提供しないことを保証できる必要があります。コンテンツをキャッシュできる期間を示すヘッダー(Cache-Control など)がサーバから送信されると、その値が NSX Advanced Load Balancer で使用されます。サーバから有効期限のタイムアウトが送信されない場合、新しい状態をしっかりと確定できない NSX Advanced Load Balancer では、[キャッシュの有効期限] で指定した期間を超えてオブジェクトを保存することはありません。

  • [ヒューリスティックな有効期限] - サーバからの応答オブジェクトに [Cache-Control] ヘッダーが含まれていないが [If-Modified-Since] ヘッダーが含まれている場合、NSX Advanced Load Balancer では、この時間を利用してキャッシュ制御の有効期限を計算します。この有効期限は、このオブジェクトの [キャッシュの有効期限] の設定よりも優先されます。

  • [クエリ引数を含むキャッシュ URI] - このオプションでは、URI にクエリ引数が含まれるオブジェクトをキャッシュできます。このオプションを無効化すると、当該オブジェクトがキャッシュされなくなります。有効にすると、要求は対象の URI クエリと照合されます。クエリを含む URI の例を次に 2 つ示します。

    • www.search.com/search.asp?search=caching

    • www.foo.com/index.html?loginID=User

    1 つ目の例は一般的な検索をキャッシュする正当なユースケースとなりますが、2 つ目の例はキャッシュに対するセキュリティ上の責任を発生させる一意の要求となります。

  • [キャッシュ可能な MIME タイプ] - キャッシュ可能なオブジェクト タイプのリストが静的に定義されます。これは、System-Cacheable-Resource-Types などの文字列グループの場合も、NSX Advanced Load Balancer でキャッシュする必要がある MIME タイプのカスタム カンマ区切りリストの場合もあります。このフィールドに MIME タイプが表示されない場合、NSX Advanced Load Balancer ではデフォルトで、すべてのオブジェクトがキャッシュ可能であると見なします。

  • [キャッシュ不可能な MIME タイプ] - キャッシュ不可能なオブジェクト タイプのリストが静的に定義されます。これにより、キャッシュ可能なリストとは逆の除外リストが作成されます。両方のリストにあるオブジェクトはキャッシュされません。