セレクタと基本的なコンテンツグループを構成する
hit パラメータと無効化パラメータを使用するようにコンテンツグループを設定することもできます。ただし、Citrixではセレクターを構成することをお勧めします。
セレクターの利点
セレクタの代わりにパラメータを使用する
hit 代わりにパラメーターと無効化パラメーターを構成できます。たとえば、バグレポート用のコンテンツグループに BugID、Issuer、Assignee の 3 hit つのパラメーターを設定するとします。リクエストにBugID=456、発行者=Rohitv、担当者=Robertの場合、NetScalerアプライアンスはこれらのパラメーターと値のペアに一致する応答を処理できます。
hit 同じパラメーターをパラメーターまたは無効化パラメーターとして使用できることに注意してください。
-
URL クエリ
-
ポストボディ
-
クッキーヘッダー
セレクタを構成する
add cache selector \<selectorName\> ( \<rule\> ... )
>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")"
コンテンツグループ
-
静的コンテンツグループ。リクエストの URL ステムとホスト名、およびレスポンスの URL ステムとホスト名が完全に一致するものを検索します。
-
動的コンテンツグループ。特定のパラメータと値のペア、任意の文字列、または文字列パターンを含むオブジェクトを検索します。動的コンテンツグループは、頻繁に更新されるデータ (バグレポートや株価情報など) をキャッシュする場合に便利です。
-
ブラウザは 1 つ以上の HTTP GET リクエストを発行します。これらのリクエストにはパラメーター (バグ所有者、バグ ID など) が含まれます。
-
NetScalerアプライアンスは要求を受信すると、一致するポリシーを検索し、これらの要求と一致するキャッシュポリシーが見つかると、要求をコンテンツグループに送信します。
-
コンテンツグループは、セレクターで設定した基準に基づいて、コンテンツグループ内の適切なオブジェクトを検索します。
NameField=username and BugID=IDに一致する応答を取得できます。
-
一致するオブジェクトが見つかると、NetScalerアプライアンスはそれらをユーザーのブラウザに提供し、そこで完全な応答(バグレポートなど)にまとめられます。
-
ブラウザは、このデータを 1 つ以上の HTTP リクエストの形式で送信します。たとえば、バグの所有者とバグ ID に関する情報を含む複数の HTTP POST リクエストの形式でバグレポートを送信できます。
-
NetScalerアプライアンスは、リクエストを無効化ポリシーと照合します。通常、これらのポリシーは HTTP POST メソッドを検出するように設定されます。
-
要求が無効化ポリシーと一致する場合、NetScalerアプライアンスはこのポリシーに関連付けられているコンテンツグループを検索し、構成された無効化条件に一致する応答を期限切れにします。
NameField=username and BugID=ID
-
NetScalerアプライアンスがこれらの応答に対するGET要求を次回受信すると、元のサーバーから更新されたバージョンを取得し、更新された応答をキャッシュして、これらの応答をユーザーのブラウザーに提供します。これらの応答は、完全なバグレポートにまとめられます。
基本コンテンツグループの設定
add cache contentgroup <name> (-hitSelector <hitSelectorName> -invalSelector <invalidationSelectorName> | -hitParams <hitParamName> -invalParams<invalidationParamName>) -type <type> [-relExpiry <sec> | -relExpiryMilliSec <msec>] [-heurExpiryParam <positiveInteger>]
add cache contentgroup Products_Details –hitSelector product_selector –invalSelector id_selector
add cache contentgroup bugrep -hitParams IssuePage RecordID Template TableId -invalParams RecordID -relExpiry 864000
キャッシュされたオブジェクトを期限切れにするかフラッシュする
-
コンテンツグループの有効期限設定を設定して、オブジェクトを保持するかどうか、また保持する期間を決定します。
-
コンテンツグループの無効化ポリシーとアクションを構成します。詳細については、「 キャッシュと無効化のポリシーの設定」を参照してください。
-
コンテンツグループまたはコンテンツグループ内のオブジェクトを手動で期限切れにします。
-
マニュアル。コンテンツグループのすべての応答またはキャッシュ内のすべての応答を手動で無効にする。
-
レスポンスベース。肯定応答と否定応答の特定の有効期限。レスポンスベースの有効期限は、レスポンスに Last-Modified ヘッダーがない場合にのみ考慮されます。
-
ヒューリスティックな有効期限。Last-Modified ヘッダーを持つ応答の場合、ヒューリスティック有効期限は応答が変更されてからの経過時間を指定します (現在の時刻から Last-Modified 時間を引き、ヒューリスティック有効期限の値を掛けて計算されます)。たとえば、Last-Modified ヘッダーが応答が 2 時間前に更新されたことを示していて、ヒューリスティック有効期限設定が 10% の場合、キャッシュされたオブジェクトは 0.2 時間後に期限切れになります。この方法では、頻繁に更新される応答は、より頻繁に期限切れになる必要があると想定しています。
-
絶対または相対。回答が毎日期限切れになる正確な(絶対)時刻を、HH: MM 形式、ローカル時間、または GMT で指定します。ローカルタイムはすべてのタイムゾーンで機能しない場合があります。
-
ダウンロード時。「レスポンス受信完了後に期限切れ」オプションを選択すると、レスポンスがダウンロードされた時点で期限切れになります。これは、株価情報など、頻繁に更新される回答に役立ちます。デフォルトでは、このオプションは無効になっています。
-
**固定されています。**デフォルトでは、キャッシュがいっぱいになると、NetScalerアプライアンスは最も使用頻度の低い応答を最初に置き換えます。NetScalerアプライアンスは、固定されているとマークされているコンテンツグループにはこの動作を適用しません。
-
コンテンツグループに適用される INVAL アクションを含むポリシーを設定します。
-
INVAL アクションを使用するポリシーを設定する場合は、コンテンツグループの名前を入力します。
有効期限法の適用方法
-
オブジェクトを期限切れにするかどうかを決定するときに、NetScalerアプライアンスが応答ヘッダーを評価するかどうかを制御できます。
-
絶対有効期限と相対有効期限により、NetScalerアプライアンスは応答ヘッダーを無視します(応答の有効期限情報は上書きされます)。
-
ヒューリスティックな有効期限設定と「弱陽性」および「弱陰性」の有効期限( 構成ユーティリティではデフォルト値として表示 )により、NetScalerアプライアンスは応答ヘッダーを調べます。これらの設定は次のように連動します。
-
Expires または Cache-Control ヘッダーの値は、これらのコンテンツグループ設定よりも優先されます。
-
ExpiresまたはCache-Controlヘッダーがないが、Last-Modifiedヘッダーがある肯定応答の場合、NetScalerアプライアンスはヒューリスティックな有効期限設定をヘッダー値と比較します。
-
Expires、Cache-Control、Last-Modifiedのヘッダーがない肯定的な応答には、NetScalerアプライアンスは「弱い陽性」の値を使用します。
-
ExpiresまたはCache-Controlヘッダーのない否定的な応答の場合、NetScalerアプライアンスは「弱い負の」値を使用します。
-
| 応答タイプ | 有効期限ヘッダータイプ | コンテンツグループ設定 | オブジェクトがキャッシュに残っている期間 |
|---|---|---|---|
| ポジティブ | すべてのヘッダー | 他の設定なしでコンテンツを期限切れにする (REExpiry) | 「 コンテンツを期限切れにする 」設定の値を使用してください。 |
| ポジティブ | すべてのヘッダー | 他の設定なしでコンテンツを期限切れにする (ABS期限) | [ コンテンツの有効期限 ] 設定の値から現在の日付を引きます。 |
| ポジティブ | すべてのヘッダー | [コンテンツの有効期限] ([有効期限]) と [コンテンツの期限切れ] (ABS期限) | コンテンツグループの設定には、2 つの値の小さい方を使用します。この表の前の行を参照してください。 |
| ポジティブ | 最終更新日 (他のヘッダーを含む) | ヒューリスティック (HeuRExpiry パラメータ) とその他の設定 | 現在の日付から最終更新日を引き、その結果にヒューリスティック有効期限設定の値を掛けて、100 で割ります。 |
| ポジティブ | 最終更新日 (他のヘッダーを含む) | デフォルト (正) (WeakPosREL 有効期限)、その他の設定なし | デフォルト (正) 有効期限設定の値を使用してください。 |
| ポジティブ | 有効期限切れまたはキャッシュコントロール:Max-Age ヘッダーが存在する | 最終更新ヘッダーが存在しない、ヒューリスティック (HeuRespiry パラメーター)、デフォルト (正) (WeakPosREL 有効期限)、またはその両方が表示される | 有効期限または日付から現在の日付を引きます。 Cache-Control:Max-Age |
| ポジティブ | キャッシュヘッダーなし | デフォルト (正) (WeakPosREL 有効期限) およびその他の有効期限設定 | デフォルト (正) 設定の値を使用してください。 |
| ポジティブ | キャッシュヘッダーなし | ヒューリスティック (HeuRespiry パラメーター) は存在しますが、デフォルト (正) (WeakPosREL 有効期限) 設定はありません。 | Last-Modified ヘッダーがない場合、応答はキャッシュされないか、既に Expired ステータスでキャッシュされます。Last-Modified ヘッダーが存在する場合は、ヒューリスティックな有効期限値を使用してください。 |
| ネガティブ | 有効期限が切れるまたは Cache-Control:Max-Age |
[コンテンツを期限切れにする (RELExpiry)]、[コンテンツの有効期限] (ABS Expiry)、またはその両方の設定 | Expires ヘッダーの値から現在の日付を減算するか、Cache-Control: Max-Age ヘッダーの値を使用してください。 |
| ネガティブ | 有効期限またはキャッシュコントロールヘッダーがない | [コンテンツを期限切れにする (RELExpiry)]、[コンテンツの有効期限] (ABS Expiry)、またはその両方の設定 | レスポンスはキャッシュされていないか、すでに期限切れのステータスでキャッシュされています。 |
| ネガティブ | 有効期限が切れるまたは Cache-Control:Max-Age |
すべての設定 | Cache-Control:Max-Age 有効期限または日付から現在の日付を引きます。 |
| ネガティブ | 有効期限とキャッシュコントロール:Max-Age ヘッダーはありません | デフォルト (マイナス) (弱ネグレルの有効期限) | デフォルト (マイナス) 設定の値を使用してください。 |
| ネガティブ | 有効期限とキャッシュコントロール:Max-Age ヘッダーはありません | デフォルト (マイナス) (WeakNegrel 有効期限) 以外のすべての設定 | オブジェクトはキャッシュされていないか、すでに期限切れのステータスでキャッシュされています。 |
手動でコンテンツグループを期限切れにする
expire cache contentGroup <name>
コンテンツグループの定期的な有効期限の設定
set cache contentgroup \<name> (-relExpiry|-relExpiryMilliSec|-absExpiry|-absExpiryGMT| -heurExpiryParam|-weakPosRelExpiry|-weakNegRelExpiry| -expireAtLastBye) \<expirationValue>
個々の回答を期限切れにする
ETag バリデーターや Last-Modified ヘッダーがないレスポンスは再検証できません。そのため、これらの応答をフラッシュしても、期限切れになるのと同じ効果があります。
expire cache object -url <URL> -host <hostName> [-port <port>] [-groupName<contentGroupName>] [-httpMethod GET|POST]
expire cache object -locator <positiveInteger>
コンテンツグループ内の回答をフラッシュする
flush cache contentGroup <name> [-query <queryString> | [-selectorValue <selectorExpressionIDList> -host <hostName>]]
-
詳細ペインで、次のように回答をフラッシュします。
-
すべてのコンテンツグループのすべての回答を消去するには、「すべて無効」をクリックし、すべての回答をフラッシュします。
-
特定のコンテンツグループの回答を消去するには、コンテンツグループを選択し、「 無効化」をクリックして、すべての回答をフラッシュします。
-
flush cache object -locator <positiveInteger> | -url <URL> -host <hostName> [-port <port>] [-groupName <contentGroupName>] [-httpMethod GET|POST]
コンテンツグループを削除する
rm cache contentgroup <name>