セレクタと基本コンテンツグループの構成
セレクターを構成し、コンテンツグループに適用できます。1つ以上のコンテンツグループにセレクターを追加する場合、セレクターをキャッシュ要求の識別に使用するか、無効化(期限切れ)するキャッシュオブジェクトの識別に使用するかを指定します。セレクタはオプションです。または、hit
パラメーターと無効化パラメーターを使用するようにコンテンツグループを構成することもできます。ただし、セレクタを構成することをお勧めします。
セレクタを設定した後、または代わりにパラメータを使用することを決定したら、基本的なコンテンツグループを設定する準備が整います。基本コンテンツグループを作成したら、キャッシュからオブジェクトを期限切れにする方法を決定し、キャッシュの有効期限を設定する必要があります。「キャッシュパフォーマンスの向上」および「Cookie、ヘッダー、およびポーリングの設定」の説明に従って、キャッシュをさらに変更できますが、最初にキャッシュポリシーを構成する必要がある場合があります。
注
コンテンツグループのパラメータとセレクタは要求時にのみ使用され、通常は MAY_CACHE または MAY_NOCACHE アクションを使用するポリシーに関連付けます。
セレクタの利点
セレクタは、コンテンツグループ内の特定のオブジェクトを検索するフィルタです。セレクタを構成しない場合、Citrix® ADCアプライアンスはコンテンツグループ内で完全に一致するものを探します。これにより、同じオブジェクトの複数のコピーが 1 つのコンテンツグループ内に存在する可能性があります。たとえば、セレクタを持たないコンテンツグループでは、ホスト1.ドメイン.comypage.htm、ホスト2.ドメイン.commypage.htm、およびホスト3.ドメイン.commypage.htm の URL を保存する必要があります。これとは対照的に、セレクタはURL(mypage.html、式 http.req.url を使用)とドメイン(.com、式 http.req.hostname.domain を使用)のみに一致することができ、リクエストは同じ URL によって満たされます。
セレクタ式は、パラメータの簡単なマッチングを実行できます(たとえば、いくつかのクエリ文字列パラメータとその値に一致するオブジェクトを検索する場合など)。セレクター式では、ブール論理、算術演算、属性の組み合わせを使用して、オブジェクトを識別できます (たとえば、URL ステムのセグメント、クエリ文字列、POST リクエスト本体の文字列、HTTP ヘッダー内の文字列、Cookie など)。セレクタは、要求内の情報を分析するためのプログラム機能を実行することもできます。例えば、セレクタは、POST本文内のテキストを抽出し、テキストをリストに変換し、リストから特定の項目を抽出することができます。
式および式で指定できる内容の詳細については、「ポリシーと式」を参照してください。
セレクタの代わりにパラメータを使用する
Citrixでは、コンテンツグループでセレクターを使用することをお勧めしますが、代わりにhit
パラメーターと無効化パラメーターを構成できます。たとえば、バグレポートのコンテンツグループに、BugID、Issuer、Assigneeの3つのhit
パラメータを設定するとします。リクエストにBugID=456が含まれており、発行者はRohitV、担当者はロバートである場合、Citrix ADCアプライアンスはこれらのパラメーターと値のペアに一致する応答を提供できます。
コンテンツグループの無効化パラメーターは、キャッシュされたエントリを期限切れにします。たとえば、BugIDが無効化パラメータであり、ユーザーがPOSTリクエストを発行してバグレポートを更新するとします。無効化ポリシーはこのコンテンツグループにリクエストを転送し、コンテンツグループの無効化パラメーターは、BugID 値と一致するすべてのキャッシュされた応答を期限切れにします。(次回ユーザーがこのレポートに対してGETリクエストを発行すると、キャッシュポリシーにより、Citrix ADCアプライアンスがレポートのキャッシュされたエントリをオリジンサーバーから更新できるようになります)。
同じパラメータをhit
パラメータまたは無効化パラメータとして使用できることに注意してください。
コンテンツグループは、次の順序でリクエストパラメータを抽出します。
- URL クエリ
- ポスト本文
- クッキーのヘッダー
パラメータが最初に出現した後、リクエストで発生した場所に関係なく、後続のすべての出現は無視されます。たとえば、URL クエリと POST 本文の両方にパラメータが存在する場合、URL クエリの 1 つだけが考慮されます。
コンテンツグループに対してヒットおよび無効化パラメータを使用する場合は、コンテンツグループを設定するときにパラメータを設定します。
注:セレクタは柔軟性が高く、より多くの種類のデータに対応できるため、パラメータ化されたコンテンツグループではなくセレクタを使用することをお勧めします。
セレクタの設定
コンテンツグループは、ヒットセレクタを使用してキャッシュヒットを取得したり、無効セレクターを使用して期限切れのキャッシュオブジェクトを取得したり、オリジンサーバーから新しいオブジェクトをフェッチしたりできます。
セレクタには、高度な式と呼ばれる名前と論理式が含まれています。
高度な式の詳細については、「ポリシーと式」を参照してください。
セレクタを設定するには、セレクタに名前を割り当て、1 つ以上の式を入力します。ベストプラクティスとして、セレクタ式には URL ステムとホストを含める必要があります(省略する強い理由がない限り)。
CLI を使用してセレクタを設定するには
コマンドプロンプトで入力します。
add cache selector \
式を設定する方法については、「コマンドラインインターフェイスを使用してセレクタ式を設定するには」を参照してください。
>add cache selector product_selector "http.req.url.query.value("ProductId")" "http.req.url.query.value("BatchNum")" "http.req.url.query.value("depotLocation")" > add cache selector batch_selector "http.req.url.query.value("ProductId")" "http.req.url.query.value("BatchId")" "http.req.url.query.value("depotLocation")" > add cache selector product_id_selector "http.req.url.query.value("ProductId")" > add cache selector batchnum_selector "http.req.url.query.value("BatchNum")" "http.req.url.query.value("depotLocation")" > add cache selector batchid_selector "http.req.url.query.value("depotLocation")" "http.req.url.query.value("BatchId")"
GUI を使用してセレクタを設定するには
[最適化] > [統合キャッシュ] > [キャッシュセレクタ]に移動し、キャッシュセレクタを追加します。
コンテンツグループ
コンテンツグループは、レスポンスで提供できるキャッシュされたオブジェクトのコンテナです。統合キャッシュを初めて有効にすると、キャッシュ可能なオブジェクトは Default という名前のコンテンツグループに保存されます。固有のプロパティを持つコンテンツグループを作成できます。たとえば、画像データ、バグレポート、株価情報用に個別のコンテンツグループを定義し、株価情報コンテンツグループを他のグループよりも頻繁に更新するように設定できます。
コンテンツグループ全体、またはコンテンツグループ内の選択したエントリの有効期限を構成できます。
コンテンツグループのデータは、次のように静的または動的にすることができます。
- 静的コンテンツグループ。リクエストの URL ステムとホスト名、レスポンスの URL ステムとホスト名との完全一致を検索します。
- 動的コンテンツグループ。特定のパラメーターと値のペア、任意の文字列、または文字列パターンを含むオブジェクトを検索します。動的コンテンツグループは、頻繁に更新されるデータ(バグレポートや株価など)をキャッシュする場合に便利です。
コンテンツグループからのリクエストを処理する
- ユーザーがバグレポートなどの項目の検索条件を入力し、HTML フォームの [検索] ボタンをクリックします。
- ブラウザは、1 つ以上の HTTP GET 要求を発行します。これらのリクエストには、パラメータ(バグの所有者、バグ ID など)が含まれます。
- Citrix ADCアプライアンスは要求を受信すると、一致するポリシーが検索され、これらの要求に一致するキャッシュポリシーが見つかると、要求がコンテンツグループに転送されます。
- コンテンツグループは、セレクターで構成した基準に基づいて、コンテンツグループ内の適切なオブジェクトを探します。
たとえば、コンテンツグループはNameField=username and BugID=ID
に一致する応答を取得できます。
- 一致するオブジェクトが見つかった場合、Citrix ADCアプライアンスはそれらをユーザーのブラウザに提供し、そこで完全な応答(バグレポートなど)にアセンブルされます。
コンテンツグループ内のオブジェクトを無効にする
- ユーザーがデータを変更します(たとえば、ユーザーがバグレポートを変更し、[Submit] ボタンをクリックした場合など)。
- ブラウザは、このデータを 1 つ以上の HTTP 要求の形式で送信します。たとえば、バグの所有者とバグ ID に関する情報を含む複数の HTTP POST リクエストの形式でバグレポートを送信できます。
- Citrix ADCアプライアンスは、無効ポリシーに対して要求を照合します。通常、これらのポリシーは HTTP POST メソッドを検出するように設定されます。
- 要求が無効ポリシーと一致する場合、Citrix ADCアプライアンスは、このポリシーに関連付けられているコンテンツグループを検索し、無効化のための構成された条件に一致する応答を期限切れにします。
たとえば、無効化セレクターはNameField=username and BugID=ID
に一致する応答を見つけることができます。
- Citrix ADCアプライアンスは、次回これらの応答に対するGET要求を受信すると、オリジンサーバーからリフレッシュされたバージョンを取得し、リフレッシュされた応答をキャッシュし、ユーザーのブラウザーにこれらの応答を提供します。そこで完全なバグレポートが作成されます。
基本コンテンツグループを設定する
デフォルトでは、すべてのキャッシュされたデータは、デフォルトのコンテンツグループに格納されます。より多くのコンテンツグループを構成し、これらのコンテンツグループを1つ以上のポリシーで指定できます。
静的コンテンツのコンテンツグループを構成できます。動的コンテンツのコンテンツグループを構成する必要があります。デフォルトグループを含め、任意のコンテンツグループの構成を変更できます。
コマンドラインインターフェイスを使用して基本的なコンテンツグループをセットアップするには
コマンドプロンプトで入力します。
add cache contentgroup
add cache contentgroup Products_Details –hitSelector product_selector –invalSelector id_selector
add cache contentgroup bugrep -hitParams IssuePage RecordID Template TableId -invalParams RecordID -relExpiry 864000
GUI を使用して基本的なコンテンツグループを設定するには
[最適化] > [統合キャッシュ] > [コンテンツグループ]に移動し、コンテンツグループを作成します。
キャッシュされたオブジェクトを期限切れまたはフラッシュする
応答に Expires ヘッダーまたは有効期限が設定された Cache-Control ヘッダー (Max-Age または Smax-Age) がない場合は、次のいずれかの方法を使用して、コンテンツグループ内のオブジェクトを期限切れにする必要があります。
- コンテンツグループの有効期限設定を構成して、オブジェクトを保持するかどうか、および保持期間を決定します。
- コンテンツグループの無効化ポリシーとアクションを構成します。詳細については、「キャッシュと無効化のポリシーの設定」を参照してください。
- コンテンツグループまたはコンテンツグループ内のオブジェクトを手動で期限切れにします。
キャッシュされたレスポンスの有効期限が切れると、Citrix ADCアプライアンスは、クライアントが次回レスポンスのリクエストを発行したときにレスポンスを更新します。デフォルトでは、キャッシュがいっぱいになると、Citrix ADCアプライアンスは最も最近使用されていない応答を最初に置き換えます。
次のリストは、コンテンツグループの設定を使用して、キャッシュされた応答を期限切れにする方法を示しています。通常、これらのメソッドはパーセントまたは秒単位で指定します。
- [手動]:コンテンツグループ内のすべての応答またはキャッシュ内のすべての応答を手動で無効にします。
- 応答ベース。肯定応答と否定応答の特定の有効期限間隔。応答ベースの有効期限は、Last-Modifiedヘッダーが応答に欠落している場合にのみ考慮されます。
- ヒューリスティック有効期限。Last-Modifiedヘッダーを持つ応答の場合、ヒューリスティック有効期限は、応答が変更されてからの時間のマウントを指定します(現在の時刻からLast-Modified時間を差し引き、ヒューリスティック有効期限の値を掛けて計算されます)。たとえば、Last-Modified ヘッダーが応答が 2 時間前に更新されたことを示し、ヒューリスティック有効期限設定が 10% の場合、キャッシュされたオブジェクトは 0.2 時間後に期限切れになります。この方法は、頻繁に更新される応答をより頻繁に期限切れにする必要があることを前提としています。
- 絶対または相対。応答が毎日期限切れになる正確な(絶対)時間を指定します。HH: MM形式,現地時間,または格林尼治时间。ローカル時刻は、すべてのタイムゾーンで動作しない場合があります。
相対有効期限は、キャッシュミスによってオリジンサーバーへのトリップが発生してから応答が期限切れになるまでの数秒またはミリ秒を指定します。相対的な有効期限をミリ秒単位で指定する場合は、10 の倍数を入力します。この形式の有効期限は、すべての肯定的な応答に対して機能します。レスポンス内の最終変更ヘッダー、失効ヘッダー、キャッシュ制御ヘッダーは無視されます。
絶対的および相対的な有効期限は、応答自体の有効期限情報を上書きします。
- ダウンロード時。[完全な応答を受信した後に期限切れ]オプションは、ダウンロード時に応答を期限切れにします。これは、株価など、頻繁に更新される応答に役立ちます。デフォルトでは、このオプションは無効になっています。
[Flash Cache] と [応答完了後に期限切れにする] の両方を有効にすると、動的アプリケーションのパフォーマンスが高速になります。両方のオプションを有効にすると、Citrix ADCアプライアンスは同時要求のブロックに対して1つの応答のみをフェッチします。
- ピン固定。デフォルトでは、キャッシュがいっぱいになると、Citrix ADCアプライアンスは最も最近使用されていない応答を最初に置き換えます。Citrix ADCアプライアンスは、ピン留めとしてマークされたコンテンツグループにはこの動作を適用しません。
コンテンツグループの有効期限設定を構成しない場合、グループ内のオブジェクトを期限切れにするためのその他のオプションは次のとおりです。
- コンテンツグループに適用される INVAL アクションを使用してポリシーを設定します。
- INVAL アクションを使用するポリシーを設定するときに、コンテンツグループの名前を入力します。
有効期限メソッドの適用方法
肯定応答と否定的な応答では、有効期限が異なります。正と負の応答については、以下の表「正と負の応答の有効期限」で説明しています。
コンテンツグループに適用される有効期限方法を理解するための経験則を次に示します。
- オブジェクトを期限切れにするかどうかを決定するときに、Citrix ADCアプライアンスが応答ヘッダーを評価するかどうかを制御できます。
- 絶対的および相対的な有効期限により、Citrix ADCアプライアンスは応答ヘッダーを無視します(応答内の有効期限情報を上書きします)。
- ヒューリスティック有効期限の設定と「弱い陽性」と「弱い負」の有効期限(構成ユーティリティでデフォルト値)により、Citrix ADCアプライアンスは応答ヘッダーを調べます。これらの設定は、次のように連携して機能します。
- Expires ヘッダーまたは Cache-Control ヘッダーの値は、これらのコンテンツグループ設定よりも優先されます。
- ExpiresまたはCache-Controlヘッダーがなく、Last-Modifiedヘッダーがある肯定的な応答の場合、Citrix ADCアプライアンスはヒューリスティックの有効期限設定とヘッダー値を比較します。
- Expires、Cache-Control、またはLast-Modifiedヘッダーがない肯定応答の場合、Citrix ADCアプライアンスは「弱い肯定」値を使用します。
- ExpiresまたはCache-Controlヘッダーがない否定応答の場合、Citrix ADCアプライアンスは「弱い否定」値を使用します。
次の表では、これらのメソッドがどのように適用されるかを説明します。
応答タイプ | 有効期限ヘッダータイプ | コンテンツグループの設定 | オブジェクトがキャッシュに残る期間 |
---|---|---|---|
Positive | 任意のヘッダー | 他の設定なしでコンテンツを期限切れにする(relExpiry) | Expire ContentAfter設定の値を使用します。 |
Positive | 任意のヘッダー | 他の設定なしでコンテンツを期限切れにする(absExpiry) | Expire ContentAt設定の値から現在の日付を引きます。 |
Positive | 任意のヘッダー | コンテンツの期限を過ぎる (relExpiry) と、コンテンツの期限を過ぎる (absExpiry) | コンテンツグループ設定には、2 つの値のうち小さい方を使用します。この表の前の行を参照してください。 |
Positive | Last-Modified(他のヘッダーも含む) | ヒューリスティック(heurExpiry パラメータ)とその他の設定 | 現在の日付からLast-Modified日を減算し、ヒューリスティック有効期限の設定の値で結果を乗算し、100 で除算します。 |
Positive | Last-Modified(他のヘッダーも含む) | デフォルト(positive)(weakPosRel 有効期限)と他の設定なし | [既定 (positive) 有効期限設定] の値を使用します。 |
Positive | ExpiresまたはCache-Control: Max-Ageヘッダーが存在する | 最終変更されたヘッダーがない、ヒューリスティック(heurExpiry Param)、デフォルト(正)(weakPosRel Expiry)、またはその両方 | 有効期限またはCache-Control:Max-Age 日付から現在の日付を引きます。 |
Positive | キャッシングヘッダーなし | デフォルト(positive)(weakPosRel Expiry)およびその他の有効期限設定 | [既定 (positive)] の設定値を使用します。 |
Positive | キャッシングヘッダーなし | ヒューリスティック(heurExpiry Param)が存在し,デフォルト(正)(weakPosRel Expiry)設定が存在しません。 | Last-Modifiedヘッダーが存在しない場合、応答はキャッシュされないか、すでに期限切れの状態でキャッシュされます。Last-Modified ヘッダーが存在する場合は、ヒューリスティック有効期限の値を使用します。 |
Negative | 有効期限またはCache-Control:Max-Age |
[コンテンツの期限を過ぎる] (relExpiry)、[期限切れ] (absExpiry)、またはその両方の設定 | Expires ヘッダーの値から現在の日付を減算するか、キャッシュコントロール:Max-Age ヘッダーの値を使用します。 |
Negative | ExpiresまたはCache-Controlヘッダーがない | [コンテンツの期限を過ぎる] (relExpiry)、[期限切れ] (absExpiry)、またはその両方の設定 | 応答がキャッシュされていないか、Already Expired状態でキャッシュされています。 |
Negative | 有効期限またはCache-Control:Max-Age |
任意の設定 | 有効期限またはCache-Control:Max-Age 日付から現在の日付を引きます。 |
Negative | Expires およびCache-Control:Max-Ageヘッダーが存在しない | デフォルト (negativwe) (weakNegRel Expiry) | [既定 (negative)] の設定値を使用します。 |
Negative | Expires およびCache-Control:Max-Ageヘッダーが存在しない | デフォルト(negative)以外の設定(weakNegRel Expiry) | オブジェクトはキャッシュされていないか、既に期限切れの状態でキャッシュされています。 |
手動の方法でコンテンツグループを期限切れにする
コンテンツグループ内のすべてのエントリを手動で期限切れにすることができます。
コマンドラインインターフェイスを使用して、コンテンツグループ内のすべての応答を手動で期限切れにするには
コマンドプロンプトで入力します。
expire cache contentGroup
GUI を使用してコンテンツグループ内のすべての応答を手動で期限切れにするには
[最適化] > [統合キャッシュ] > [コンテンツグループ]に移動し、コンテンツグループを選択し、[無効] をクリックして、コンテンツグループ内のすべての応答を期限切れにします。
GUI を使用してキャッシュ内のすべての応答を手動で期限切れにするには
[最適化] > [統合キャッシュ] > [コンテンツグループ]に移動し、[すべて無効] をクリックして、キャッシュ内のすべての応答を期限切れにします。
コンテンツグループの定期的な有効期限を構成する
コンテンツグループは、エントリの選択的または完全な有効期限を実行するように設定できます。有効期限間隔は、固定または相対的に指定できます。
コマンドラインインターフェイスを使用してコンテンツグループの有効期限を構成するには
コマンドプロンプトで入力します。
设置缓存contentgroup \ <名称> (-relExpiry | -relExpiryMilliSec|-absExpiry|-absExpiryGMT| -heurExpiryParam|-weakPosRelExpiry|-weakNegRelExpiry| -expireAtLastBye) \
GUI を使用してコンテンツグループの有効期限を構成するには
[最適化] > [統合キャッシュ] > [コンテンツグループ] に移動し、コンテンツグループを選択し、有効期限方法を指定します。
個々の回答を期限切れにする
応答の有効期限が切れると、Citrix ADCアプライアンスは、更新されたコピーをオリジナル・サーバーからフェッチします。ETag
やLast-Modifiedヘッダーなど、バリデーターがない応答は再検証できません。その結果、これらの応答をフラッシュすることは、それらの応答を期限切れにする場合と同じ効果があります。
静的データのコンテンツグループのキャッシュされた応答を期限切れにするには、保存された URL と一致する必要がある URL を指定できます。キャッシュされた応答がパラメータ化されたコンテンツグループの一部である場合は、グループ名と正確なURLステムを指定する必要があります。ホスト名とポート番号は、キャッシュされた応答のホスト HTTP 要求ヘッダーと同じである必要があります。ポートが指定されていない場合は、ポート 80 が想定されます。
コマンドラインインターフェイスを使用してコンテンツグループ内の個々の応答を期限切れにするには
コマンドプロンプトで入力します。
expire cache object -url
CLI を使用してコンテンツグループの個々の応答を期限切れにするには
コマンドプロンプトで、次のコマンドを入力します。
expire cache object -locator
GUI を使用してキャッシュされた応答を期限切れにするには
最適化に移動>統合キャッシング>キャッシュされたオブジェクト、キャッシュされた応答を選択し、期限切れにします。
GUI を使用して応答を期限切れにするには
最適化に移動>統合キャッシング>キャッシュされたオブジェクトで、[検索]をクリックし、検索条件を設定して、必要なキャッシュされた応答を見つけて期限切れにします。
コンテンツグループ内の応答のフラッシュ
コンテンツグループ内のすべてのレスポンス、グループ内の一部のレスポンス、またはキャッシュ内のすべてのレスポンスを削除またはフラッシュできます。キャッシュされたレスポンスをフラッシュすると、新しいキャッシュされたレスポンスのメモリが解放されます。
注:
一度に複数のオブジェクトの応答をフラッシュするには、構成ユーティリティメソッドを使用します。コマンドラインインターフェイスでは、このオプションは提供されません。
コマンドラインインターフェイスを使用してコンテンツグループからの応答をフラッシュするには
コマンドプロンプトで入力します。
flush cache contentGroup
GUI を使用してコンテンツグループからの応答をフラッシュするには
- [最適化] > [統合キャッシュ] > [コンテンツグループ] に移動します。
- 詳細ペインで、次のように応答をフラッシュします。
- すべてのコンテンツグループ内のすべての回答をフラッシュするには、[すべて無効化] をクリックし、すべての回答をフラッシュします。
- 特定のコンテンツグループ内の応答をフラッシュするには、コンテンツグループを選択し、[無効化] をクリックして、すべての応答をフラッシュします。
注意: このコンテンツ・グループがセレクタを使用する場合、「セレクタ値」テキスト・ボックスに文字列を入力し、「ホスト」テキスト・ボックスにホスト名を入力することで、応答を選択してフラッシュできます。次に、[フラッシュ] と [OK] をクリックします。Selector 値には、パラメータ化された無効化に使用される最大 2319 文字のクエリ文字列を指定できます。
コンテンツグループが無効化パラメータを使用している場合は、[クエリ]フィールドに文字列を入力することで、応答を選択的にフラッシュできます。
コンテンツグループが無効化パラメーターを使用し、ターゲットホストに属するInvalidateオブジェクトが構成されている場合は、[クエリ]フィールドと[ホスト]フィールドに文字列を入力します。
コマンドラインインターフェイスを使用してキャッシュされた応答をフラッシュするには
コマンドプロンプトで入力します。
flush cache object -locator
GUI を使用してキャッシュされた応答をフラッシュするには
[最適化] > [統合キャッシュ] > [キャッシュされたオブジェクト] に移動し、キャッシュされたオブジェクトを選択してフラッシュします。
コンテンツグループの削除
コンテンツグループは、応答をキャッシュに保存するポリシーによって使用されていない場合は、削除できます。コンテンツグループがポリシーにバインドされている場合は、最初にポリシーを削除する必要があります。コンテンツグループを削除すると、そのグループに保存されているすべての応答が削除されます。
Default、BASEFILE、またはDeltasグループを削除することはできません。Default グループは、他のコンテンツグループに属さないキャッシュされたレスポンスを格納します。
コマンドラインインターフェイスを使用してコンテンツグループを削除するには
コマンドプロンプトで入力します。
rm cache contentgroup
GUI を使用してコンテンツグループを削除するには
[最適化] > [統合キャッシュ] > [コンテンツグループ] に移動し、コンテンツグループを選択して削除します。