キャッシュと無効化のポリシーを構成する
-
**アクションをキャッシュします。**CACHE アクションに関連付けるポリシーは、応答をキャッシュに保存し、キャッシュから処理します。
-
**無効化アクション。**INVAL アクションに関連付けるポリシーは、キャッシュされた応答をただちに期限切れにし、オリジンサーバーから更新します。Web ベースのアプリケーションの場合、無効化ポリシーは POST リクエストを評価することがよくあります。
-
「キャッシュしない」アクション。NOCACHE アクションに関連付けるポリシーは、オブジェクトをキャッシュに保存しません。
-
**アクションを暫定的にキャッシュします。**MAYCACHEまたはMAYNOCACHEアクションに関連付けるポリシーは、より多くのポリシー評価の結果によって異なります。
LOCKリクエストの受信時にキャッシュされたオブジェクトを無効にすることができます。無効化ポリシーの場合のみ、式http.req.method.eq(“lock”)を使用してLOCKをメソッドとして指定できます。NetScaler アプライアンスはこのメソッド名を文字列として認識するため、 GETおよびPOST要求のポリシーとは異なり、LOCKメソッドを引用符で囲む必要があります。
統合キャッシュポリシーに関連付けるアクション
| アクション | 仕様 |
|---|---|
| キャッシュ | 応答の有効期限が切れていない場合は、キャッシュから応答を返します。応答を配信元サーバーから取得する必要がある場合、NetScalerアプライアンスは応答を提供する前に応答をキャッシュします。頻繁に更新されアクセスされるデータもキャッシュできます。たとえば、株価は頻繁に更新されますが、キャッシュしておくと、複数のユーザーにすばやく配信できます。必要に応じて、キャッシュされたデータはダウンロード後すぐに更新できます。CACHE アクションは組み込みポリシーで上書きできます。 |
| NOCACHE | 常にオリジンサーバーからレスポンスを取得し、そのレスポンスを保存不可としてマークします。通常、機密データやパーソナライズされたデータには NOCACHE ポリシーを設定します。 |
| MAY_CACHE | リクエストタイムポリシーで使用すると、レスポンスタイムポリシーの評価を待つ間、レスポンスをコンテンツグループに保存することが暫定的に可能になります。次のことが可能です。1. 一致する応答時間ポリシーに CACHE アクションはあるがコンテンツグループが指定されていない場合、組み込みポリシーがこのポリシーよりも優先されない限り、応答は Default グループに保存されます。一致する応答時間ポリシーに CACHE アクションがあり、要求時ポリシー内のコンテンツグループと同じコンテンツグループが指定されている場合、組み込みポリシーがこのポリシーよりも優先されない限り、応答は指定されたコンテンツグループに保存されます。一致する応答時間ポリシーに CACHE アクションがあるが、要求時ポリシー内のコンテンツグループとは異なるコンテンツグループが指定されている場合、NOCACHE アクションが適用されます。一致するレスポンス・タイム・ポリシーにNOCACHEアクションがある場合は、NOCACHEアクションを実行します。一致する応答時間ポリシーがない場合は、組み込みポリシーがこのポリシーよりも優先されない限り、CACHE アクションが適用されます。 |
| MAY_NOCACHE | リクエスト時ポリシーでは、この設定によりレスポンスのキャッシュが暫定的に禁止されます。応答時に、次のいずれかのアクションが実行されます。-リクエストに一致する応答時間ポリシーがない場合、最後のアクションは NOCACHE です。-一致する応答時間ポリシーにCACHEアクションが含まれている場合、組み込みポリシーがこのポリシーをオーバーライドしない限り、最後のアクションはCACHEです。-一致する応答時間ポリシーに NOCACHE アクションが含まれている場合、最後のアクションは NOCACHE です。-一致する応答時間ポリシーに CACHE アクションはあるがコンテンツグループが指定されていない場合、組み込みポリシーがこのポリシーよりも優先されない限り、最後のアクションは応答をデフォルトコンテンツグループにキャッシュすることです。 |
| INVAL | キャッシュされた応答を期限切れにします。ポリシーとコンテンツグループの設定方法に応じて、1 つ以上のコンテンツグループのすべての応答が期限切れになるか、コンテンツグループ内の選択したオブジェクトが期限切れになります。注:INVAL アクションはリクエスト時ポリシーでのみ指定できます。 |
ポリシーのバインドポイント
-
仮想サーバ。仮想サーバにバインドするポリシーは、「ポリシー評価の順序」で説明されているように、グローバルオーバーライドポリシーの後およびグローバルデフォルトポリシーの前に処理されます。ポリシーを仮想サーバーにバインドするときは、ポリシーを要求時または応答時の処理にバインドします。
-
アドホックポリシーラベル。ポリシーラベルは、ポリシーバンクに割り当てられる名前です。統合キャッシュには、グローバルラベルに加えて、次の 2 つのカスタムポリシーラベルが組み込まれています。
-
_reqBuiltinDefaults. このポリシーラベルは、デフォルトでは、リクエスト時のデフォルトポリシーバンクから呼び出されます。
-
_resBuiltinDefaults. このポリシーラベルは、デフォルトでは、応答時間のデフォルトポリシーバンクから呼び出されます。
-
ポリシー評価の順序
-
リクエスト時間のオーバーライド。要求が要求時上書きポリシーと一致する場合、デフォルトで要求時ポリシー評価は終了し、NetScalerアプライアンスは一致するポリシーに関連付けられたアクションを保存します。
-
要求時の負荷分散仮想サーバー。すべての要求時オーバーライドポリシーを評価してもポリシー評価を完了できない場合、NetScalerアプライアンスは負荷分散仮想サーバーにバインドされた要求時ポリシーを処理します。リクエストがこれらのポリシーのいずれかに一致すると、評価が終了し、NetScalerアプライアンスは一致するポリシーに関連付けられたアクションを保存します。
-
リクエスト時のコンテンツスイッチング仮想サーバー。このバインドポイントにバインドされたポリシーは、負荷分散仮想サーバーにバインドされた要求時ポリシーの後に評価されます。
-
リクエスト時間のデフォルト。すべての要求時間が経過してもポリシー評価を完了できない場合、仮想サーバー固有のポリシーが評価されると、NetScalerアプライアンスは要求時のデフォルトポリシーを処理します。要求が要求時のデフォルトポリシーと一致する場合、デフォルトで要求時のポリシー評価は終了し、NetScalerアプライアンスは一致するポリシーに関連付けられたアクションを保存します。
-
応答時間のオーバーライド。リクエスト時のオーバーライドポリシー評価に似ています。
-
応答時間負荷分散仮想サーバー。要求時の仮想サーバーポリシー評価に似ています。
-
応答時間のコンテンツスイッチング仮想サーバー。要求時の仮想サーバーポリシー評価に似ています。
-
応答時間のデフォルト。リクエスト時のデフォルトポリシー評価に似ています。
NOCACHEアクションと Cookie を使用したリクエストに対するMAY_NOCACHEアクションを返すため、リクエスト時のオーバーライド評価時に呼び出す必要があります。 パラメータ化されたコンテンツグループを指す要求時ポリシーに、 MAY_CACHEまたはMAY_NOCACHEアクションを関連付けます。応答時間ポリシーによって、トランザクションがキャッシュに格納されるかどうかが決まります。
統合キャッシュのポリシーを構成する
-
ルール:HTTP リクエストまたはレスポンスを評価する論理表現。
-
アクション:ポリシーをアクションに関連付けて、ポリシー・ルールに一致するリクエストまたはレスポンスをどう処理するかを決定します。
add cache policy <policyName> -rule <expression> -actionCACHE|MAY_CACHE|NOCACHE|MAY_NOCACHE [-storeInGroup <contentGroupName>] [-undefAction NOCACHE|RESET] > add cache policy image_cache -rule "http.req.url.contains(\"jpg\") || http.req.url.contains(\"jpeg\")" -action CACHE -storeingroup myImages_group -undefaction NOCACHE
> add cache policy bugReportPolicy -rule "http.req.url.query.contains(\"IssuePage\")" -action CACHE -storeInGroup bugReportGroup
> add cache policy my_form_policy -rule "http.req.header(\"Host\")contains(\"my.company.com\") && http.req.method.eq(\"GET\") && http.req.url.query.contains(\"v=7\")" -action CACHE -storeInGroup my_form_event
> add cache policy viewproducts_policy –rule "http.req.url.contains(\"viewproducts.aspx\")" –action CACHE -storeInGroup Product_Details
add cache policy <policyName> -rule <expression> -action INVAL [-invalObjects "<contentGroupName1>[,<selectorName1>"]. . .]] | [-invalGroup <contentGroupName1>[, <contentGroupName2>. . .]] [-undefAction NOCACHE|RESET]> add cache policy invalidation_events_policy -rule "http.req.header("Host")contains("my.company.com") && http.req.method.eq("GET") && http.req.url.query.contains("v=8") -action INVAL -invalObjects my_form_event -undefaction NOCACHE> add cache policy inval_all -rule "http.req.method.eq("POST") && http.req.url.contains("jpeg")" -action INVAL -invalGroups myImages_group myApps_group PDF_group> add cache policy bugReportInvalidationPolicy -rule "http.req.url.query.contains("TransitionForm")" -action INVAL -invalObjects bugReport`
`> add cache policy editproducts_policy –rule "http.req.url.contains("editproducts.aspx")" –action INVAL -invalObjects "Product_Details,batchnum_sel" "Products_In_Depots,batchid_sel"
統合キャッシュポリシーをグローバルにバインドする
bind cache global <policy> -priority <positiveInteger> [-typeREQ_OVERRIDE|REQ_DEFAULT|RES_OVERRIDE|RES_DEFAULT] [-gotoPriorityExpression <expression>] [-invoke <labelType> <labelName>]> bind cache global myCachePolicy -priority 100 -type req_default
> bind cache global myCache Policy 200
統合キャッシュポリシーを仮想サーバーにバインドする
bind lb vserver <name>@ -policyName <policyName> -priority <positiveInteger> -type(REQUEST|RESPONSE)bind cs vserver <name>@ -policyName <policyName> -priority <positiveInteger> -type(REQUEST|RESPONSE)
-
LB仮想サーバー - Traffic Management > Load Balancing > Virtual Servers,に移動して仮想サーバーを選択し、関連キャッシュポリシーをバインドします。
ファイルの圧縮および非圧縮バージョンをキャッシュする方法
Accept-Encoding:compression リクエストでフォーマットヘッダーが送信されます。クライアントが受け入れる圧縮タイプは、キャッシュされたオブジェクトの圧縮タイプと一致する必要があります。たとえば、Accept-Encoding:deflate ヘッダーのあるリクエストに応答してcached.gzipファイルを提供することはできません。
add cache selector uncompressed_response_selector http.req.url "http.req.header(\"Host\")"
add cache contentGroup uncompressed_group -hitSelector uncompressed_responst_selector -invalSelector uncomp_resp_sel
add cache policy cache_uncompressed -rule "HTTP.REQ.URL.CONTAINS(\"xyz\") && !HTTP.REQ.HEADER(\"Accept-Encoding\").EXISTS" -action CACHE -storeInGroup uncompressed_group
bind cache global cache_uncompressed -priority 100 -gotoPriorityExpression END -type REQ_OVERRIDE
add cache selector compressed_response_selector HTTP.REQ.URL "HTTP.REQ.HEADER(\"Host\")" "HTTP.REQ.HEADER(\"Accept-Encoding\")"
add cache contentGroup compressed_group -hitSelector compressed_response_selector
add cache policy cache_compressed -rule "HTTP.REQ.URL.CONTAINS(\"xyz\") && HTTP.REQ.HEADER(\"Accept-Encoding\").EXISTS" -action CACHE -storeInGroup compressed_group
bind cache global cache_compressed -priority 200 -gotoPriorityExpression END -type REQ_OVERRIDE
キャッシュ用のポリシーバンクの構成
| 属性 | Specifies |
|---|---|
| 名前 | ポリシーの名前、またはポリシーを評価せずに別のポリシーバンクを呼び出す場合は、キーワード NOPOLICY。ポリシーバンクでは NOPOLICY を複数回指定できますが、名前付きポリシーは 1 回しか指定できません。 |
| 優先度 | 整数。整数が小さいほど、優先度が高くなります。 |
| Goto 式 | 次に評価するポリシーまたはポリシーバンクを決定します。次の値のいずれかを指定できます。1. 次へ:次に優先度の高いポリシーに移動 2. 終了:評価を停止します。3. USE_INVOCATION_RESULT: このエントリが別のポリシーバンクを呼び出す場合に適用されます。呼び出されたバンクの最後の Goto の値が END の場合、評価は停止します。最後の Goto が END 以外の場合は、現在の政策銀行が NEXT を実行します。正の数:次に評価される政策の優先度番号 5. 数値表現:次に評価されるポリシーの優先順位番号を生成する式。Gotoは政策銀行でしか前進できない。Goto 式を省略することは、END を指定することと同じです。 |
| 呼び出しタイプ | ポリシーバンクの種類を指定します。値は次のいずれかです-1。仮想サーバーをリクエスト:仮想サーバーに関連付けられているリクエスト時ポリシーを呼び出します。2. レスポンス仮想サーバー:仮想サーバーに関連付けられている応答時間ポリシーを呼び出します。3. ポリシーラベル:銀行のポリシーラベルによって識別されるように、別のポリシーバンクを呼び出します。 |
| 呼び出し名 | 「呼び出しタイプ」に指定した値に応じて、仮想サーバーまたはポリシーラベルの名前を指定します。 |
_reqBuiltInDefaults:このポリシーラベルは、リクエスト時のデフォルトのバインドポイントから呼び出されます。 _resBuiltInDefaults:このポリシーラベルは、応答時のデフォルトのバインドポイントから呼び出されます。
bind cache policylabel <labelName> -policname<policyName> -priority<priority> [-gotoPriorityExpression <gotopriorityExpression>] [-invoke <labelType> <labelName>]
-
ポリシーを評価せずにポリシーラベルを呼び出す場合は、「NOPOLICY」をクリックします。
bind lb vserver <name>@ -policyName <policyName>|<NOPOLICY-CACHE> -priority<positiveInteger> -gotoPriorityExpression <expression> -type REQUEST|RESPONSE -invoke<labelType> <labelName>bind cs vserver <name> -policyName <policyName>|<NOPOLICY-CACHE> -priority<positiveInteger> -gotoPriorityExpression <expression> -type REQUEST|RESPONSE -invoke<labelType> <labelName>
-
このバンクの既存のエントリを設定する場合は、この手順をスキップしてください。このポリシーバンクに新しいポリシーを追加する場合、または「ダミー」NOPOLICY エントリを使用する場合は、 をクリックして、次のいずれかの操作を行います。
-
新しいポリシーを設定するには、「 統合キャッシュでのポリシーの設定」の説明に従って、[キャッシュ] をクリックし、新しいポリシーを設定します。
-
ポリシールールを処理せずにポリシーバンクを呼び出すには、
NOPOLICY-CACHEオプションを選択します。
-
統合キャッシュにポリシーラベルを設定
\_reqBuiltinDefaultsおよび\_resBuiltinDefaultsからのみ呼び出すことができます。ポリシーラベルは、一度だけ呼び出すことができるポリシーとは異なり、何度でも呼び出すことができます。
NOPOLICY「ダミー」ポリシーを使用して、別のポリシーバンクからポリシーラベルを呼び出すことができます。NOPOLICYエントリは、ルールを処理しないプレースホルダです。
-
add cache policylabel <labelName> -evaluates (REQ|RES) -
show cache policylabel <labelName>
統合キャッシュポリシーとポリシーラベルをバインド解除して削除する
unbind cache global <policy>
(unbind lb vserver|unbind cs vserver) <vserverName> -policyName <policyName> -type(REQUEST|RESPONSE)
rm cache policy <policyName>