Cookie、ヘッダー、およびポーリングを構成する
標準からのキャッシュ動作の相違について
-
RFC 2616「HTTP HTTP/1.1」
-
RFC 2617「HTTP 認証:基本認証とダイジェストアクセス認証」で説明されているキャッシュ動作
-
RFC 2965「HTTP 状態管理メカニズム」で説明されているキャッシュ動作
-
ヴァリヘッダは限定的にサポートされています。デフォルトでは、ヴァリヘッダーを含むレスポンスは、圧縮されない限りキャッシュ不可とみなされます。圧縮された応答には、コンテンツエンコーディング:gzip、コンテンツエンコーディング:deflate、またはコンテンツエンコーディング:pack200-gzip が含まれており、Vary: Accept-encoding ヘッダーが含まれていてもキャッシュ可能です。
-
統合キャッシュは、ヘッダーの cache-control (no-cache および cache-control: private) の値を無視します。たとえば、cache-control: no-cache= "set-cookie"を含むレスポンスは、レスポンスに Cache-Control: no-cache が含まれているかのように扱われます。デフォルトでは、レスポンスはキャッシュされません。
-
イメージレスポンスに set-cookie または set-cookie2 ヘッダーが含まれている場合や、イメージリクエストに Cookie ヘッダーが含まれている場合でも、イメージ(content-type = image/*)は常にキャッシュ可能と見なされます。統合キャッシュは、set-cookie と set-cookie2 ヘッダーをキャッシュする前にレスポンスから削除します。これは RFC 2965 とは違います。RFC 準拠の動作は次のように設定できます。
add cache policy rfc_compliant_images_policy -rule "http.res.header.set-cookie2.exists || http.res.header.set-cookie.exists" -action NOCACHE
bind cache global rfc_compliant_images_policy -priority 100 -type REQ_OVERRIDE
-
リクエスト内の次のキャッシュ制御ヘッダーは、RFC 準拠のキャッシュにオリジンサーバーからキャッシュされたレスポンスをリロードするように強制します。
Cache-control: max-age=0
Cache-control: no-cache
-
デフォルトでは、キャッシュモジュールは、レスポンスヘッダーの状態がそうでない場合を除き、レスポンスはキャッシュ可能であるとみなします。この動作を RFC 2616 に準拠させるには、すべてのコンテンツグループに対して
-weakPosRelExpiryと-weakNegResExpiryを0に設定します。
レスポンスからクッキーを削除する
Remove Response Cookiesパラメーターは、レスポンスをキャッシュする前にSet-Cookie and Set-Cookie2ヘッダーを削除します。既定では、コンテンツグループのRemove Response Cookiesオプションでは、Set-CookieヘッダーまたはSet-Cookie2ヘッダーを含む応答のキャッシュは禁止されています。
Set-CookieヘッダーとSet-Cookie2ヘッダーが削除されます。
Remove Response Cookiesを使用することをお勧めします。
Remove Response Cookiesを設定するには、次の手順を実行します。
set cache contentgroup <name> -removeCookies YES
NetScaler GUIを使用してコンテンツグループの応答Cookieの削除を構成する
レスポンスタイムに HTTP ヘッダを挿入する
| Header | 仕様 |
|---|---|
| 年齢 | オリジンサーバーでレスポンスが生成された時間から計算された、レスポンスの経過時間(秒)を提供します。デフォルトでは、キャッシュはキャッシュから提供されるすべてのレスポンスに Age ヘッダーを挿入します。 |
| 経由で | 要求または応答の開始点と終了点の間にあるプロトコルと受信者を一覧表示します。NetScalerアプライアンスは、キャッシュから処理されるすべての応答にViaヘッダーを挿入します。挿入されるヘッダーのデフォルト値は、 NS-CACHE-10.0。NetScaler IPアドレスの最後のオクテットです。詳しい情報については、「キャッシュ用のグローバル属性の設定」を参照してください。 |
Tag |
コマンドラインインターフェイスを使用してコンテンツグループに対してTagを設定するには、次の手順を実行します。キャッシュは、レスポンスをキャッシュし、オリジンサーバーが独自のTagヘッダーを挿入していない場合にのみ、Tagをレスポンスに挿入します。 Tag 値は任意の一意の数値です。レスポンスのTag値は、オリジンサーバーから更新されると変更されますが、サーバーが 304 (object Not updated) レスポンスを送信した場合は同じままです。動的コンテンツはキャッシュ不可と見なされるため、通常、オリジンサーバーは動的コンテンツのバリデータを生成しません。この動作はオーバーライドできます。 Tag ヘッダーを挿入すると、キャッシュは完全なレスポンスを処理しないことが許可されます。代わりに、ユーザーエージェントは、統合キャッシュによって最初に送信された動的応答をキャッシュする必要があります。ユーザーエージェントにレスポンスを強制的にキャッシュさせるには、統合キャッシュを設定してTagヘッダーを挿入し、オリジンが提供する Cache-Control ヘッダーを置き換えます。 |
| キャッシュコントロール | NetScalerアプライアンスは通常、オリジンサーバーから送信される応答のキャッシュ性ヘッダーを変更しません。オリジンサーバーがキャッシュ不可とラベル付けされた応答を送信した場合、NetScalerアプライアンスが応答をキャッシュしていても、クライアントはその応答をキャッシュ不可として扱います。動的レスポンスをユーザーエージェントにキャッシュするには、オリジンサーバーの Cache-Control ヘッダーを置き換えることができます。これは、ユーザーエージェントとその他の介在するキャッシュにのみ適用されます。統合キャッシュには影響しません。 |
| Header | 仕様 |
|---|---|
| 年齢 | オリジンサーバーでレスポンスが生成された時間から計算された、レスポンスの経過時間(秒)を提供します。デフォルトでは、キャッシュはキャッシュから提供されるすべてのレスポンスに Age ヘッダーを挿入します。 |
| 経由で | 要求または応答の開始点と終了点の間にあるプロトコルと受信者を一覧表示します。NetScalerアプライアンスは、キャッシュから処理されるすべての応答にViaヘッダーを挿入します。挿入されたヘッダーのデフォルト値は「NS-CACHE-9.2: NetScaler IPアドレスの最後のオクテット」です。詳しい情報については、「キャッシュ用のグローバル属性の設定」を参照してください。 |
Tag |
キャッシュは、Last-Modified ヘッダーと Tag ヘッダーを使用した応答検証をサポートし、応答が古くなっているかどうかを判断します。キャッシュは、レスポンスをキャッシュし、オリジンサーバーが独自のTagヘッダーを挿入していない場合にのみ、Tagをレスポンスに挿入します。 Tag 値は任意の一意の数値です。レスポンスのTag値は、オリジンサーバーから更新されると変更されますが、サーバーが 304 (object Not updated) レスポンスを送信した場合は同じままです。動的コンテンツはキャッシュ不可と見なされるため、通常、オリジンサーバーは動的コンテンツのバリデータを生成しません。この動作はオーバーライドできます。 Tag ヘッダーを挿入すると、キャッシュは完全なレスポンスを処理しないことが許可されます。代わりに、ユーザーエージェントは、統合キャッシュによって最初に送信された動的応答をキャッシュする必要があります。ユーザーエージェントにレスポンスを強制的にキャッシュさせるには、統合キャッシュを設定してTagヘッダーを挿入し、オリジンが提供する Cache-Control ヘッダーを置き換えます。 |
| キャッシュコントロール | NetScalerアプライアンスは通常、オリジンサーバーから送信される応答のキャッシュ性ヘッダーを変更しません。オリジンサーバーがキャッシュ不可とラベル付けされた応答を送信した場合、NetScalerアプライアンスが応答をキャッシュしていても、クライアントはその応答をキャッシュ不可として扱います。動的レスポンスをユーザーエージェントにキャッシュするには、オリジンサーバーの Cache-Control ヘッダーを置き換えることができます。これは、ユーザーエージェントとその他の介在するキャッシュにのみ適用されます。統合キャッシュには影響しません。 |
年齢、経由、またはタグヘッダーの挿入
set cache contentgroup <name> -insertVia YES -insertAge YES -insertETag YES
NetScaler GUIを使用してAge、Via、またはEtagヘッダーを構成する
キャッシュコントロールヘッダを挿入する
NetScalerコマンドインターフェイスを使用してキャッシュ制御ヘッダーを挿入する
set cache contentgroup <name> -cacheControl <value>
NetScaler GUIを使用してキャッシュ制御ヘッダーを挿入する
リクエスト内のキャッシュコントロールとプラグマヘッダーを無視する
-
最大年齢
-
最大失効しました
-
キャッシュされた場合のみ有る
-
キャッシュなし
| キャッシュコントロールとプラグマヘッダーを無視するための設定 | ブラウザのリロード要求を無視する設定 | 結果 |
|---|---|---|
| はい | はいまたはいいえ | Cache-Control: no-cache ディレクティブを含め、クライアントからの Cache-Control ヘッダーと Pragma ヘッダーは無視してください。 |
| 番号 | はい | Cache-Control: no-cache ヘッダーはキャッシュミスを生成しますが、すでにキャッシュにあるレスポンスは更新されません。 |
| 番号 | 番号 | Cache-Control: no-cache ヘッダーを含むリクエストはキャッシュミスを引き起こし、保存されたレスポンスはリフレッシュされます。 |
set cache contentgroup <name> -ignoreReqCachingHdrs YES
set cache contentgroup <name> -ignoreReloadReq NO
GUI を使用してリクエストの Cache-Control ヘッダーと Pragma ヘッダーを無視する
リクエストを受信するたびにオリジンサーバーをポーリングします
-
条件付きリクエスト:クライアントは、応答が最新のコピーであることを確認するために、条件付きリクエストを発行します。キャッシュされた PET 応答に対するユーザーエージェントリクエストは、常に条件付きリクエストに変換され、オリジンサーバーに送信されます。条件付きリクエストの
If-Modified-SinceヘッダーまたはIf-None-Matchヘッダーにバリデータがあります。If-Modified-SinceヘッダーにはLast-Modifiedヘッダーの時刻が含まれます。If-None-Match ヘッダーには、レスポンスの Tag ヘッダー値が含まれます。クライアントのレスポンスのコピーが新鮮な場合、オリジンサーバーは 304 Not Modified と応答します。コピーが古くなっている場合、条件付き応答では 200 OK が生成され、応答全体が格納されます。 -
非条件付きリクエスト:非条件リクエストでは、レスポンス全体を含む 200 OK しか生成できません。
| オリジンサーバーのレスポンス | アクション |
|---|---|
| 完全な回答を送信 | オリジンサーバーはレスポンスをそのままクライアントに送信します。キャッシュされたレスポンスの有効期限が切れた場合、そのレスポンスはリフレッシュされます。 |
| 304 変更されていない | 304 レスポンスのヘッダー値がキャッシュされたレスポンスとマージされ、キャッシュされたレスポンスがクライアントに提供されます。Date、Expires、Age、Cache-Control ヘッダー Max-Age、および S-Maxage トークン |
| 401 無許可、400 不正な要求、405 メソッドは許可されない、406 は受け入れられない、407 プロキシ認証が必要 | オリジンの応答は、そのままクライアントに提供されます。キャッシュされたレスポンスは変更されません。 |
| その他のエラー応答 (404 Not Found など) | オリジンの応答は、そのままクライアントに提供されます。キャッシュされたレスポンスは削除されます。 |
add cache contentgroup <contentGroupName> -pollEveryTime YES
GUI を使用してポーリングする
PET およびクライアント固有のコンテンツ
add cache contentgroup EnglishLanguageGroup -pollEveryTime YES
add expression containsENExpression –rule "http.res.header(\\"Content-Language\\").contains(\\"en\\")"
add cache policy englishPolicy -rule containsENExpression -action CACHE -storeInGroup englishLanguageGroup
bind cache policy englishPolicy -priority 100 -precedeDefRules NO
PET と認証、承認、監査
ETag レスポンスとして保存できるバリデータがあります。