ヘッダーをスキップ
Oracle Fusion Middleware Oracle Web Cache管理者ガイド
11g リリース1(11.1.1)
B56248-02
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

6 コンテンツのキャッシュと圧縮

この章では、Oracle Web Cacheを使用してコンテンツをキャッシュおよび圧縮する方法について概説します。キャッシュへのデータの格納、キャッシュの一貫性およびキャッシュ・ルールについて説明します。また、キャッシュ・ルールと有効期限ポリシーを構成するためのプロパティについて説明します。

この章の項目は次のとおりです。

6.1 キャッシュへのデータ格納について

キャッシュ・ルールを定義して、キャッシュするオブジェクトを決定します。キャッシュ・ルールを作成した場合、そのルールに一致するオブジェクトは、クライアント・リクエストがあるまでキャッシュされません。クライアントが最初にオブジェクトをリクエストすると、Oracle Web Cacheはそのリクエストをオリジン・サーバーに送信します。このリクエストはキャッシュ・ミスになります。このURLにはキャッシュ・ルールが関連付けられているため、Oracle Web Cacheは後続のリクエストのためにそのオブジェクトをキャッシュに格納します。Oracle Web Cacheは、同じオブジェクトに対して2度目のリクエストを受けると、そのオブジェクトをキャッシュからクライアントに送信します。このリクエストはキャッシュ・ヒットになります。

Oracle Web Cacheを停止すると、キャッシュのすべてのオブジェクトが削除されます。さらに、Oracle Web Cacheによって統計もリセットされます。

Oracle Web Cacheがキャッシュ・ルールによってキャッシュへのデータ格納を決定する方法については、第6.3項を参照してください。

6.2 キャッシュの一貫性について

Oracle Web Cacheの信頼性を確保する上で、一貫性は非常に重要です。次の機能によって、キャッシュとオリジン・サーバー間の一貫性が確保されます。

6.2.1 有効期限

有効期限によって、Oracle Web Cacheはキャッシュ内に一定期間存在したオブジェクトを無効にします。オリジン・サーバーまたはデータベースでコンテンツが変更されるタイミングを正確に予測できる場合は、有効期限を使用すると便利です。オブジェクトがいつまでもキャッシュ内に残ることがないように、すべてのキャッシュ・オブジェクトに対して有効期限ポリシーを作成することをお薦めします。

有効期限ポリシーの作成方法は、第6.7項を参照してください。

6.2.2 HTTPキャッシュの検証

Oracle Web Cacheは、HTTP/1.1検証モデルを使用して、クライアントに対する最適なレスポンス送信方法を判断します。検証では、2つのバリデータを比較して、それらが同じエンティティを表すのか、異なるエンティティを表すのかが判断されます。具体的には、Oracle Web CacheはIf-Modified-SinceヘッダーとIf-None-Matchヘッダーを使用して、次の妥当性を決定します。

  • キャッシュされたコピーのヘッダーと比較して、ブラウザのヘッダーが有効であること

  • オリジン・サーバーのヘッダーと比較して、キャッシュされたコピーのヘッダーが有効であること


注意:

Oracle Web Cacheは、If-None-Matchバリデータに対して弱いバリデータはサポートしていません。Oracle Web Cacheは、他のすべてのIf-None-Matchリクエスト・ヘッダー・フィールドの書式をサポートしています。

検証の詳細は、次を参照してください。

  • キャッシュの検証の詳細は、HTTP/1.1仕様書(http://www.ietf.org/rfc/rfc2616.txt)の第13.3項「Validation Model」を参照してください。

  • コンテンツを無効にする方法は、第6.2.3項を参照してください。

  • 有効期限ポリシーの作成方法は、第6.7項を参照してください。

6.2.3 無効化

有効期限を予測できないコンテンツに対しては、無効化を使用できます。無効化によって、Oracle Web Cacheはオブジェクトを無効にします。オブジェクトが無効になった後にクライアントがそれらをリクエストすると、オブジェクトはキャッシュから削除され、オリジン・サーバーから新しいコンテンツが取得されてキャッシュが更新されます。無効になったオブジェクトはすぐに削除して新しいものに更新するか、あるいはオリジン・サーバーの現在の負荷に基づいて、削除と更新を行うことが可能です。

無効化の詳細は、第7章「コンテンツの無効化」を参照してください。

6.3 キャッシュ・デシジョンについて

キャッシュ・ルールにより、静的オブジェクト、複数バージョンのオブジェクト、パーソナライズ・ページ、セッションCookie埋込みURLパラメータまたはPOST本体パラメータをサポートするページ、および動的ページのコンテンツをキャッシュするかどうかを選択できます。

Fusion Middleware Controlを使用して、URLまたはContent-Typeレスポンス・ヘッダーに基づいたキャッシュ属性を指定することでキャッシュ・ルールを構成するか、またはSurrogate-Controlレスポンス・ヘッダー・フィールド内の特定のオブジェクトに対してキャッシュ属性を設定します。ルールに一致するオブジェクトがクライアントによってリクエストされるまで、それらのオブジェクトはキャッシュに格納されません。

Oracle Web Cacheでは、次の優先順位を使用して、オブジェクトがキャッシュ可能かどうかを決定します。

  1. Surrogate-Controlレスポンス・ヘッダー

  2. Fusion Middleware Controlを使用して構成されたキャッシュ・ルール

  3. その他のHTTPヘッダー:

    • Authorizationリクエスト・ヘッダー

    • Proxy-Authorizationリクエスト・ヘッダー

    • Pragma: no-cacheレスポンス・ヘッダー

    • Warningレスポンス・ヘッダー

    これらのヘッダーのいずれかが存在する場合、Oracle Web Cacheでは、オブジェクトがキャッシュされません。

  4. Cookieリクエスト・ヘッダーおよびSet-Cookieレスポンス・ヘッダーのCookie値

  5. Cache-Controlレスポンス・ヘッダー

  6. Expiresレスポンス・ヘッダー

Surrogate-Controlレスポンス・ヘッダー・フィールドを使用すると、Fusion Middleware Controlによって構成されたキャッシュ・ルールをオリジン・サーバー側でオーバーライドできます。同じオブジェクトに対してSurrogate-Controlレスポンス・ヘッダーとキャッシュ・ルールの両方がある場合、Oracle Web Cacheはこの2つをマージします。たとえば、キャッシュ不可のオブジェクトに対してFusion Middleware Controlで圧縮が使用可能に設定されているキャッシュ・ルールがあり、レスポンス・ヘッダーにSurrogate-Control: max-age=30+60という記述が含まれている場合、Oracle Web Cacheは両方の設定を考慮します。Oracle Web Cacheは、オブジェクトのキャッシュにSurrogate-Controlレスポンス・ヘッダーのmax-age制御ディレクティブを使用し、キャッシュ・ルールから圧縮の設定を使用します。Surrogate-Controlレスポンス・ヘッダーとキャッシュ・ルールの間に競合がある場合、Oracle Web CacheではSurrogate-Controlレスポンス・ヘッダーの設定が使用されます。

キャッシュ・ルールもSurrogate-Controlレスポンス・ヘッダーも指定されていない場合、Oracle Web CacheはHTTPプロキシ・キャッシュと同様に動作します。つまり、HTTPヘッダー情報を使用して何がキャッシュ可能かを判断します。一般的に、HTTPプロキシ・キャッシュには静的コンテンツを含むページのみが格納されます。


注意:

  • 再起動時や一括無効化処理の実行後は、WGETなどのフリーウェアのWebクローラを使用してキャッシュにあらかじめデータを格納しておくことができます。WGETの詳細は、http://www.gnu.org/software/wget/wget.htmlを参照してください。

  • Oracle Web Cacheを停止すると、キャッシュ内のオブジェクトがすべて削除されます。さらに、統計もすべて削除されます。


Oracle Web Cacheがキャッシュへのデータ格納を決定する方法については、第6.1項を参照してください。

6.4 キャッシュ・ルールの作成の概要

オブジェクトに対するキャッシュ・ルールを作成する場合は、まずオブジェクトのルールを特定のサイトに対して設定するのか、すべてのサイトに対してグローバルに設定するのかを決定します。サイト固有のキャッシュ・ルールは、グローバル・ルールよりも優先されます。ルールの対象を決定したら、次にルールの一般的な属性を構成します。

一致評価の条件として、リクエストのURL式またはレスポンスのMIMEタイプ、あるいはその両方を使用するのかを選択します。一致条件を選択しない場合、Oracle Web CacheはすべてのURLおよびすべてのMIMEタイプとルールを一致させます。

URL式の入力が面倒な場合には、MIMEタイプに基づいて一致評価を行います。たとえば、各種のイメージ・タイプに対する複雑なURL式を次に示します。

\.(gif|jpe?g|png|bmp)$

かわりに、「MIMEタイプ」オプションを選択し、「次で始まる」を選択して、式フィールドに次の文字列を入力します。

image/

Content-Typeレスポンス・ヘッダーは、通常追加のコンテンツ・パラメータ値を持つため、ほとんどの一致評価では、「次で始まる」オプションを選択します。

式フィールドにはカンマで区切ったリストも入力できます。同じ例で、GIFまたはJPEGレスポンスにのみ一致させたい場合は、式フィールドに次の文字列を入力します。

image/gif, image/jpeg

キャッシュ・ルールを作成したら、次にキャッシュ・ルールの優先順位を指定します。優先順位の高いルールが最初に一致します。サイト固有のキャッシュ・ルールは、グローバルなキャッシュ・ルールよりも優先されます。キャッシュ可能なオブジェクトとキャッシュ不可のオブジェクトのキャッシュ・ルールの順序付けでは、キャッシュ不可のオブジェクトに対して、キャッシュ可能なオブジェクトより高い優先順位を指定します。

表6-1に示されているルールの場合、ルール2は、GETメソッドおよび問合せ文字列を含むGETメソッドを使用するURLのオブジェクトをキャッシュし、ルール3は、POSTメソッドおよびaction=searchに一致するPOST本体を使用するURLのオブジェクトをキャッシュします。順位が反転すると、/cec/cstage?ecaction=ecpassthru2を含めて、/cec/cstage?ecaction=ecpassthruで開始するすべてのオブジェクトがキャッシュされます。

表6-1 異なるHTTPメソッドの優先順位の例

優先順位 一致条件 HTTPメソッド POST本体式 アクション

1

URL式:

正規表現: ^/cec/cstage\?ecaction=ecpassthru2

パス接頭辞: /cec/cstage\?ecaction=ecpassthru2

GETおよび問合せ文字列を含むGET

なし

キャッシュしない

2

URL式:

正規表現: ^/cec/cstage\?ecaction=ecpassthru.*

パス接頭辞: /cec/cstage\?ecaction=ecpassthru

GETおよび問合せ文字列を含むGET

なし

キャッシュ

3

URL式:

正規表現: ^/cec/cstage\?ecaction=ecpassthru.*

パス接頭辞: /cec/cstage\?ecaction=ecpassthru

POST本体式

action=search

キャッシュ

4

MIMEタイプ:

/image

GETおよび問合せ文字列を含むGET

なし

キャッシュ


キャッシュ・ルールの一般的な属性の指定および優先順位の指定に関する詳細は、第6.8.1項を参照してください。

6.5 詳細設定の構成の概要

一般的な属性に加え、次に説明するように詳細設定を構成できます。

6.5.1 複数バージョンを持つオブジェクトのキャッシュ

ページによっては、複数のバージョンが存在してカテゴリ化が可能な場合があります。図6-1に、同じhttps://oraclestore.oracle.com/OA_HTML/ibeCCtpItmDspRte.jsp?item=293017&section=11538というオブジェクトを使用して、顧客とオラクル社の従業員に対してそれぞれ異なる価格を表示するページを示します。顧客はec-400-id-acctcat=WALKINというCookie名と値を渡していますが、従業員はec-400-id-acctcat=INTERNALというCookie名と値を渡しています。

図6-1 複数のバージョンを持つオブジェクト

図6-1の説明が続きます
「図6-1 複数のバージョンを持つオブジェクト」の説明

Oracle Web Cacheを構成することにより、次の情報を使用して複数バージョンのページの識別およびキャッシュが可能です。

  • ページのCookieの値

  • ページのHTTPリクエスト・ヘッダー

Cookie(カテゴリCookieとも呼ばれる)を使用するオブジェクトの場合、Cookie名と、そのCookieを使用しないバージョンのオブジェクトをキャッシュするかどうかを指定するキャッシュ・ルールを構成します。

複数のバージョンを持つオブジェクトに対するリクエストがクライアントから初めて送信されると、Oracle Web Cacheはそのリクエストをオリジン・サーバーに渡します。オリジン・サーバーは、カテゴリがCookieで、値が次のように設定されたSet-Cookieレスポンス・ヘッダーをレスポンスに含めます。

Set-Cookie:cookie=value

Oracle Web Cacheでは、この最初のレスポンスはキャッシュされません。クライアントは、Set-Cookieレスポンス・ヘッダー・フィールドを受け取ると、Cookieをメモリーに保存します。次回、同じオリジン・サーバーにリクエストを送信するときには、クライアントはCookieリクエスト・ヘッダー・フィールドに、前回のレスポンスで受け取ったカテゴリCookieの名前と値を次の形式で設定します。

Cookie:cookie=value

Oracle Web Cacheは引き続きオリジン・サーバーにリクエストを転送し、オリジン・サーバーからはSet-Cookieヘッダーを含んだ、または含まないレスポンスが返されます。Oracle Web Cacheは、Set-Cookieレスポンス・ヘッダーに設定されたCookieとその値が、Cookieリクエスト・ヘッダーに設定されたCookieとその値と一致するかどうかを評価します。Cookieとその値が一致すると、レスポンスがキャッシュされます。Set-Cookieヘッダーがない場合は一致と見なされます。Cookieとその値が一致しない場合、レスポンスはキャッシュされません。複数バージョンのオブジェクトがキャッシュされると、Oracle Web Cacheは、クライアントのリクエストのCookieの値を使用して、クライアントのブラウザに該当するバージョンのオブジェクトを返します。


注意:

Oracle Web Cacheでは、Set-Cookieレスポンス・ヘッダー・フィールドはキャッシュされません。

表6-2に、同じURL http://www.dot.com/page1.htmの4つの異なるバージョンを示します。URLはuser_typeという名前のCookieを使用します。これは、CustomerInternalおよびPromotionalというCookie値を含むクライアント・リクエストをサポートします。Oracle Web Cacheがuser_type Cookieを認識するように構成することにより、Oracle Web Cacheに3つの異なるオブジェクトをキャッシュさせることができます。また、Cookieを使用しないリクエストに対する4番目のオブジェクトをキャッシュするようにOracle Web Cacheを構成することもできます。

表6-2 異なるCookieの値を使用したオブジェクトの複数バージョン

バージョン URL(URL) Cookieの名前と値

1

http://www.dot.com/page1.htm

user_type=Customer

2

http://www.dot.com/page1.htm

user_type=Internal

3

http://www.dot.com/page1.htm

user_type=Promotional

4

http://www.dot.com/page1.htm

Cookieなし


HTTPリクエスト・ヘッダーに基づいて異なるバージョンを使用するオブジェクトの場合、HTTPリクエスト・ヘッダーを指定するキャッシュ・ルールを構成します。HTTPリクエスト・ヘッダーにより、クライアントはリクエストおよびクライアント自身に関する追加情報を渡すことが可能です。Oracle Web Cacheでは、リクエスト・ヘッダーを使用して、該当するバージョンのURLをクライアントに渡します。

Oracle Web Cacheでは、有効なHTTPリクエスト・ヘッダーをすべてサポートしています。表6-3に、Fusion Middleware ControlでサポートされているHTTPリクエスト・ヘッダー・フィールドを示します。標準または他のHTTPリクエスト・ヘッダー・フィールドを指定するには、Surrogate-Controlレスポンス・ヘッダー・フィールドを使用します。

表6-3 HTTPリクエスト・ヘッダー・フィールド

ヘッダー・フィールド 説明

Accept

レスポンスに使用可能なメディア・タイプを指定します。

例: Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*

Accept-Charset

レスポンスに使用可能なキャラクタ・セットを指定します。

例: Accept-Charset: iso-8859-1,*,utf-8

Accept-Encoding

レスポンスのコンテンツに使用可能なエンコーディングを制限します。

例: Accept-Encoding: gzip

Accept-Language

レスポンスに使用する言語セットを指定します。

例: Accept-Language: en

User-Agent

リクエストを発信したクライアントに関する情報が含まれます。

例: User-Agent: Mozilla/4.61 [en] (WinNT; U)



注意:

Oracle Web Cacheでは、デフォルトでこれらのHTTPリクエスト・ヘッダーの値が解析されません。2つのページの値が異なる場合、Oracle Web Cacheによりそれらのページは別々にキャッシュされます。

この問題は、User-Agentリクエスト・ヘッダーの場合は特に処理が複雑で、ブラウザのタイプ、バージョンおよびオペレーティング・システムごとに重複したキャッシュ・エントリが過剰に作成される場合があります。たとえば、異なるバージョンのInternet Explorerに対して、あるリクエストではUser-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows)というHTTPリクエスト・ヘッダー・フィールドが送信され、別のリクエストではUser-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows; DigExt)というHTTPリクエスト・ヘッダー・フィールドが送信された場合、Oracle Web Cacheではこれら2つのリクエストに対して2つのページが処理されます。

User-Agentリクエスト・ヘッダーに対するこの動作をオーバーライドするには、第6.8.4項の説明に従って、同じブラウザ・タイプの同じページをキャッシュして表示するようにOracle Web Cacheを構成します。


構成の詳細は、第6.8.2項を参照してください。

6.5.2 埋込みURLパラメータとPOST本体パラメータを持つオブジェクトのキャッシュ

デフォルトでは、Oracle Web Cacheは、オリジン・サーバーのレスポンスをリクエストURLによって識別します。ただし、リクエストに埋込みURLパラメータまたはPOST本体パラメータが含まれている場合、同じページ・コンテンツのリクエストURLはセッションごとに個別になります。したがって、Oracle Web Cacheでは、個別URLごとにレスポンスがキャッシュされます。その結果、キャッシュ・ヒット率が低くなり、キャッシュ内のオブジェクトに冗長性が生じます。

Oracle Web Cacheが埋込みURLパラメータまたはPOST本体パラメータの値を無視するように構成すると、Oracle Web Cacheは、同じページをリクエストする複数のセッションを1つのキャッシュ・オブジェクトで処理できます。Oracle Web Cacheは、最初のリクエストへのレスポンスをキャッシュし、そのページへの後続のリクエストをこのキャッシュから処理します。

たとえば、ユーザーJane Doeが次のリクエストURLを持つページにアクセスしているとします。

https://oraclestore.oracle.com/OA_HTML/ibeCCtpSctDspRte.jsp?section=10103&session_ID=33436
 

ユーザーJohn Doeが次のリクエストURLを持つ同じページにアクセスするとします。

https://oraclestore.oracle.com/OA_HTML/ibeCCtpSctDspRte.jsp?section=10103&session_ID=33437

また、このページには、Jane DoeとJohn Doeのそれぞれに対して次のPOST本体が含まれるとします。

section=1013
&session_ID=3346

section=1013
&session_ID=3347

リクエストURLとPOST本体で異なっているのは、session_IDパラメータの値のみです。このとき、同じオブジェクトの2つのバージョンをキャッシュして送信するのではなく、キャッシュ内の1つのオブジェクトを両方のユーザーに送信するために、session_IDの値を無視するようにOracle Web Cacheを構成します。

無視するパラメータを構成するには、すべてのキャッシュ・ルールに適用されるグローバル・パラメータを確立するか、特定のサイトのキャッシュ・ルールに適用されるサイト固有のパラメータを確立します。第6.8.3項を参照してください。

6.5.3 エラー・レスポンスのキャッシュ

オリジン・サーバーで問題が発生し、このルールに一致するリクエストに対するHTTPレスポンスのステータスが200 OKでない場合、Oracle Web Cacheはオリジン・サーバーへのリクエストの再送を試みません。かわりに、キャッシュしたHTTPエラーを返し、既知の不正なレスポンス用のオリジン・サーバーのリソースを節約します。

Oracle Web Cacheでは、デフォルトで、200 OK以外のHTTPレスポンスがキャッシュされません。これらのエラーがキャッシュされるようにするには、エラー・レスポンスを明示的にキャッシュするようにキャッシュ・ルールを構成する必要があります。Oracle Web Cacheは、ルールの有効期限ポリシーに従ってエラー・ページをキャッシュします。問題が解決した後は、HTTPエラー・レスポンスを無効にしてください。

構成の詳細は、第6.8.5項を参照してください。

6.5.4 セッションを持つオブジェクトのキャッシュ

Oracle Web Cacheでは、セッションCookie、埋込みURLパラメータまたはPOST本体パラメータが存在するリクエストまたは存在しないリクエストの処理方法を指定できます。次の選択が可能です。

  • セッションCookie、埋込みURLパラメータまたはPOST本体パラメータを持つリクエストに対して、キャッシュ内のオブジェクトを送信または送信しません。

  • セッションCookie、埋込みURLパラメータまたはPOST本体パラメータを持たないリクエストに対して、キャッシュ内のオブジェクトを送信または送信しません。

たとえば、新規ユーザーの最初のリクエストを受けたときにオリジン・サーバーからセッションを確立する場合、セッションCookieまたはパラメータを持つリクエストに対してはキャッシュ内のオブジェクトを送信し、セッションCookieまたはパラメータを持たないリクエストに対してはキャッシュ内のオブジェクトを送信しないように選択します。

両方に対してオブジェクトを送信するように選択した場合、セッションCookieやパラメータを持つリクエストまたは持たないリクエストで、同じキャッシュ内のオブジェクトを共有するかどうかを指定できます。Oracle Web Cacheでは、Cookieまたはパラメータが含まれないリクエストに対して、デフォルトの文字列が使用されます。

構成の詳細は、第6.8.6項を参照してください。

6.5.5 セッション・エンコードされたURLを持つオブジェクトのキャッシュ

第6.5.2項では、すべてのセッションにおいてコンテンツが同一であるオブジェクトに対して、埋込みURLパラメータまたはPOST本体パラメータの値を無視する方法について説明しています。ただし、オブジェクトのHTMLコンテンツが<A HREF=...>のようなハイパーリンク・タグでプログラミングされ、これにユーザーを識別するための埋込みセッション情報が含まれている場合があります。このようなリンクはセッション・エンコードされたURLと呼ばれます。セッション・エンコードされたURLを使用すると、セッション間でごくわずかな相違を持つレスポンスが生成されます。

HTMLハイパーリンク・タグのセッションを、セッションCookie、埋込みURLパラメータまたはPOST本体パラメータから取得したセッション値で置換するように、Oracle Web Cacheを構成できます。セッション値の置換を、埋込みURLパラメータの値の無視と組み合せて構成することで、セッション・エンコードされたURLのセッション・パラメータの値が変更になった場合でも、1つのオブジェクトが複数のセッション用にキャッシュされるようにOracle Web Cacheを構成できます。


注意:

Oracle Web Cacheでは、Set-Cookieレスポンス・ヘッダー・フィールドはキャッシュされません。

第6.5.2項の例において、オリジン・サーバーによってJane DoeおよびJohn Doeにそれぞれsession_ID=33436およびsession_ID=33437という埋込みURLパラメータが割り当てられているとします。図6-2に示されたページには、session_IDパラメータを含んでいる<A HREF=...>リンクが複数存在します。Jane Doeの場合、「Oracle Database」ヘッダーの下の「Oracle Database Standard Edition」リンクには、次のHTMLコードが使用されます。

<A HREF="http://oraclestore.oracle.com/OA_HTML/ibeCCtpSctDspRte.jsp?section=10166&session_ID=334326">Oracle Database Standard Edition</A>

John Doeの場合、同じリンクに次のHTMLコードが使用されます。

<A HREF="http://oraclestore.oracle.com/OA_HTML/ibeCCtpSctDspRte.jsp?section=10166&session_ID=334327">Oracle Database Standard Edition</A>

Oracle Web Cacheでは、session_ID埋込みURLパラメータの値を使用することにより、Jane DoeおよびJohn Doeのそれぞれに該当するセッション情報に置換します。

図6-2 セッション・エンコードされたURL

図6-2の説明が続きます
「図6-2 セッション・エンコードされたURL」の説明

セッション・エンコードされたURLを含むページがキャッシュに挿入されると、そのページに対する後続のリクエストは、セッションCookie、埋込みURLパラメータまたはPOST本体パラメータのどれを使用しているかに関係なく、キャッシュで処理されます。リクエストにセッションCookieまたは埋込みURLパラメータが含まれていない場合は、セッション・エンコードされたURLのセッション情報が任意の値に構成されたデフォルトの文字列で置換されるように、Oracle Web Cacheを構成できます。

構成の詳細は、第6.8.7項を参照してください。

6.6 キャッシュ・ルールを構成および監視するための基本的な作業

次に、オブジェクトをキャッシュおよび監視するために必要な手順のサマリーを示します。

  1. 有効期限ポリシーを構成します。第6.7項を参照してください。

  2. Oracle Web Cacheでリクエストを管理するサイトを作成します。第2.11.3項および第2.11.4項を参照してください。

  3. キャッシュ・ルールの一般設定を構成します。第6.8.1項を参照してください。

  4. キャッシュ・ルールの詳細設定を構成します。

    • 複数バージョンのオブジェクトをサポートしているルールのCookieとHTTPリクエスト・ヘッダー・フィールドを構成します。第6.8.2項を参照してください。

    • 埋込みURLパラメータまたはPOST本体パラメータの値を無視するようにOracle Web Cacheを構成します。第6.8.3項を参照してください。

    • ルールのエラー・レスポンスを構成します。第6.8.5項を参照してください。

    • ルールのセッション設定を構成します。第6.8.6項を参照してください。

    • セッション・エンコードされたURLに対するサポートを構成します。第6.8.7項を参照してください。

  5. Oracle Web Cacheを再起動してキャッシュ・ルールを適用します。第2.13項を参照してください。

  6. キャッシュ・ルールの統計を監視します。第6.9項を参照してください。

  7. ポピュラーなリクエストを表示します。第8.2項を参照してください。

6.7 有効期限ポリシーの構成

キャッシュ・ルールを作成する前に、有効期限ポリシーを作成します。後でキャッシュ・ルールを作成するときに、そのキャッシュ・ルールで適用する有効期限ポリシーを指定します。

キャッシュ内でオブジェクトが期限切れになるタイミングを指定する有効期限ポリシーを作成できます。さらに、オブジェクトが期限切れになった後に、キャッシュ内に存続する期間を指定することも可能です。オブジェクトが期限切れになると、Oracle Web Cacheはすぐに削除するか、または、オリジン・サーバーの容量によって許可される最大時間制限まで待って削除します。

有効期限ポリシーを作成するには、次の手順を実行します。

  1. Fusion Middleware Controlで「Webキャッシュ・メンバー」ページにナビゲートします。第2.6.2項を参照してください。

  2. Webキャッシュ」メニューから、「管理」→「有効期限」を選択します。

    「有効期限ポリシー」ページが表示されます。

  3. 作成」をクリックします。

    「有効期限ポリシーの作成」ダイアログ・ボックスが表示されます。

  4. オブジェクトの有効期限」セクションで、オプションを選択してオブジェクトを期限切れにするタイミングを指定します。

    • HTTP Expiresヘッダーのとおり: HTTPのCache-ControlまたはExpiresレスポンス・ヘッダー・フィールドに従う場合は、このオプションを選択します。これはデフォルトです。

    • エントリ・キャッシュの後: オブジェクトがキャッシュに入った時間によって期限を設定する場合は、このオプションを選択します。オブジェクトを期限切れにする時間を「時間制限」フィールドに入力します。

    • 作成後: オブジェクトが作成された時間によって期限を設定する場合は、このオプションを選択します。オブジェクトを期限切れにする時間を「時間制限」フィールドに入力します。

  5. 期限切れのオブジェクトに対するアクション」セクションで、期限切れ後のオブジェクトをOracle Web Cacheでどのように処理するかを指定します。

    • 即時削除: Oracle Web Cacheで、オブジェクトを無効にしてすぐに削除します。キャッシュがそのオブジェクトに対する次のリクエストを受信すると、オリジン・サーバーからオブジェクトが更新されます。

    • オリジン・サーバーが許可した後に必要に応じてリフレッシュ: Oracle Web Cacheで、オブジェクトを失効させ、オリジン・サーバーの許容量に基づいて更新します。オリジン・サーバーに過剰な負荷がかかる場合は、Oracle Web Cacheが失効コンテンツを処理することがあります。オブジェクトをキャッシュに残して無効な状態で表示できる最大期間を「時間制限」フィールドに入力します。

  6. OK」をクリックして変更を適用します。

  7. Oracle Web Cacheを再起動します。第2.13項を参照してください。

6.8 キャッシュ・ルールの構成と監視

この項では、Oracle Web Cacheのキャッシュ・ルールを構成する方法について説明します。次のトピックが含まれます:

6.8.1 一般ルール設定の構成

キャッシュ・ルールを作成する前に、まず特定のサイトに対してルールを設定するのか、すべてのサイトに対してグローバルに設定するのかを決定します。サイト固有のキャッシュ・ルールは、グローバル・ルールよりも優先されます。

キャッシュ・デシジョンの詳細は、第6.3項を参照してください。

キャッシュ・ルールを作成するには、次の手順を実行します。

  1. Fusion Middleware Controlで「Webキャッシュ・メンバー」ページにナビゲートします。第2.6.2項を参照してください。

  2. Webキャッシュ」メニューから、「管理」→「キャッシュ・ルール」を選択します。

    「キャッシュ・ルール」ページが表示されます。

  3. 新しいルールを作成します。

    1. サイト固有のキャッシュ・ルール」または「グローバル・キャッシュ・ルール」セクションで、「作成」をクリックします。

      「キャッシュ・ルールの作成」ページに「一般」タブが表示されます。

    2. 表6-4の説明を参照して、各要素を入力します。

      要素の入力時には、「一致条件」セクションで、一致評価の条件として、リクエストのURL式またはレスポンスのMIMEタイプ、あるいはその両方を使用するのかを選択します。一致条件を選択しない場合、Oracle Web CacheはすべてのURLおよびすべてのMIMEタイプとルールを一致させます。

      ルールに対するURL式の入力が面倒な場合は、「一致条件」セクションで「MIMEタイプ」オプションを選択します。複雑なURL式のかわりに「MIMEタイプ」オプションを使用する場合の詳細は、第6.4項を参照してください。

    3. 変更を適用して「キャッシュ・ルール」ページに戻るには、「OK」をクリックします。この変更を適用するために、「キャッシュ・ルールの作成」ページで「適用」をクリックする必要はありません。

      サイト固有のキャッシュ・ルール」または「グローバル・キャッシュ・ルール」表にキャッシュ・ルールが追加されることに注意してください。

  4. 追加の各ルールに対して、ステップ3を繰り返します。

  5. 上に移動」アイコンと「下に移動」アイコンを使用して、ルールをリクエストと照合する順序を変更します。

    ルールの順序は重要です。Oracle Web Cacheでは最初に優先度の高いルールが照合されます。

  6. 適用」をクリックして移動を適用します。

  7. 「キャッシュ・ルール」ページで、「有効化」をクリックしてルールを有効にします。

    有効化」をクリックしないと、ルールの設定がすべて無視されます。

  8. Oracle Web Cacheを再起動します。第2.13項を参照してください。

表6-4 「キャッシュ・ルール」-「一般」ページ

要素 説明

名前

キャッシュ・ルールを一意に識別する文字列を入力します。

説明

キャッシュ・ルールについて説明するコメントを入力します。

有効

キャッシュ・ルールを有効にする場合は選択し、ルール定義を失うことなくキャッシュ・ルールを一時的に無効にする場合は選択を解除します。

サイト

このルールを適用するサイトが表示されます。

必要なサイトが見つからない場合は、第2.11.3項の手順に従ってサイトを作成します。

キャッシュ

コンテンツをキャッシュする場合は、このオプションを選択します。リクエストをオリジン・サーバーに転送し、コンテンツをキャッシュしない場合は、このオプションを選択解除します。

有効期限

リストから、オブジェクトに適用する有効期限ポリシーを選択します。オブジェクトに適した有効期限ポリシーが見つからない場合は、「有効期限ポリシー」リンクをクリックします。

圧縮

圧縮されたキャッシュ可能およびキャッシュ不可のオブジェクトをブラウザに送信する場合は、このオプションを選択します。このルールで圧縮を有効にするには、サイトでも圧縮を有効にする必要があります。

サイトの圧縮プロパティの設定方法は、第2.11.3項を参照してください。

Oracle Web Cacheでは、圧縮済であることがわかっているいくつかの一般的なファイル・タイプについては、圧縮が自動的に無効になります。GIF、JPEGおよびPNGイメージを含むこのようなファイル・タイプ、または、WinZipやGZIPなどのユーティリティを使用して圧縮されたファイルのコンテンツは、圧縮しないことをお薦めします。これらのファイルを圧縮すると、圧縮の利点を受けることなく、さらにオーバーヘッドが生じます。Oracle Web Cacheで圧縮が自動的に無効になる場合については、第1.2.5項を参照してください。

URL一致条件

URL式を一致評価の基準にする場合に選択します。

  1. 式タイプを選択します。

    -ファイル拡張子: .gifなど特定のファイル拡張子で終わるオブジェクトにキャッシュ・ルールを適用する場合に選択します。

    横のフィールドにファイル拡張子を入力します。Oracle Web Cacheでは、内部的にファイル拡張子がピリオド(.)で始まるため、ピリオドを入力する必要はありません。

    -パス接頭辞: パス接頭辞に一致するオブジェクトにキャッシュ・ルールを適用する場合に選択します。

    横のフィールドに、オブジェクトのパス接頭辞を入力します。パスは/から開始します。パスをhttp://host_name:port/から開始しないでください。

    接頭辞は、正規表現の予約語を含め、文字どおり解釈されます。このような文字として、ピリオド(.)、疑問符(?)、アスタリスク(*)、大カッコ([])、中カッコ({})、キャレット(^)、ドル記号($)および円記号(¥)があります。

    -正規表現: 正規表現構文に一致するオブジェクトにキャッシュ・ルールを適用する場合に選択します。

    横のフィールドに、オブジェクトの正規表現を入力します。URLの始まりを示す「^」およびURLの終わりを示す「$」を忘れずに使用してください。

  2. リクエストの照合時に大文字と小文字を区別するには、「大/小文字区別なしの一致」チェック・ボックスを選択します。このチェック・ボックスを選択しない場合は、大文字と小文字を区別してルールが照合されます。

MIMEタイプ

Content-Typeレスポンス・ヘッダーを一致評価の基準にする場合に選択します。

  1. Oracle Web CacheがレスポンスのMIMEタイプの式値をどこで検索するかを決定する演算値を選択します。

    -次と等しい: 式と等しいMIMEタイプと照合することをOracle Web Cacheに指示する場合に選択します。

    -次で始まる: Oracle Web CacheにMIMEタイプが式で開始するかどうかを照合するよう指示する場合に選択します。

    -次を含む: Oracle Web CacheにMIMEタイプが式を含むかどうかを照合するよう指示する場合に選択します。

    Content-Typeレスポンス・ヘッダーは、通常追加のコンテンツ・パラメータ値を持つため、ほとんどの一致評価では、「次で始まる」オプションを選択します。「次と等しい」を選択した場合、一致は予想どおりに動作しないことがあります。

  2. 付属のフィールドに、Oracle Web CacheでレスポンスのMIMEタイプと比較する文字列値を入力します。式フィールドにカンマで区切ったリストを入力できます。

HTTPメソッド

次の中から、1つ以上のHTTPリクエスト・メソッドを選択します。

  • GET: Webページの単純なリクエストに使用されるHTTPリクエスト・メソッド。GETメソッドはURLで構成されます。GETメソッドを使用するページへのリクエストは、通常キャッシュされます。

  • 問合せ文字列を含むGET: パラメータおよび値が含まれているURLおよび問合せ文字列によって構成されたHTTPリクエスト・メソッド。

  • POST本体式: Webアプリケーション・サーバーのデータ・ストアの内容を変更するリクエストに使用されるHTTPリクエスト・メソッド。たとえば、メーリング・リストへのメッセージの送信、登録用フォームの送信またはデータベースへのエントリの追加など。

注意: ご使用のWebサイトで、問合せ文字列が含まれるGETまたはPOSTメソッドが、オリジン・サーバーまたはデータベースに変更を加えるフォームで使用されている場合は、「問合せ文字列を含むGET」または「POST本体式」を選択しないでください。これらのオプションは、フォームが検索フォームで使用されている場合のみ選択してください。

必要なリクエスト・パラメータ

追加」をクリックし、埋込みURLパラメータまたはPOST本体パラメータとその値を、対応する「パラメータ名」フィールドと「」フィールド(オプション)に入力します。

注意:

  • URL一致条件」リストから「正規表現」を選択した場合は、「必要なリクエスト・パラメータ」セクションを使用するか、付随する「URL一致条件」フィールドに埋込みURLパラメータをアルファベット順に手動で入力します。「必要なリクエスト・パラメータ」セクションを使用する場合、埋込みURLパラメータは自動的に並べ替えられます。付随する「URL一致条件」フィールドでパラメータを指定する方法は、第6.8.1.1項を参照してください。

  • HTTPメソッド」セクションで「POST」を選択し、このセクションでPOST本体パラメータを指定しない場合は、付随する「POST本体式」フィールドでHTTP POST本体を指定します。このルールをすべてのPOSTリクエスト本体に適用する場合は、「.*」をフィールドに入力します。


6.8.1.1 正規表現のパラメータ

クライアントのブラウザからOracle Web Cacheに送信されるリクエストURLと、Oracle Web Cacheでそのリクエストの処理に使用される内部URL式は異なります。Oracle Web Cacheでページ・リクエストが処理されるときに、そのURLの埋込みURLパラメータはアルファベット順に並べ替えられます。一方、キャッシュ・ルールは、埋込みURLパラメータが並べ替えられたURLの内部表現に対してのみ一致します。キャッシュ・ルールを正しく一致させるには、「必要なリクエスト・パラメータ」セクションを使用するか、「URL一致条件」フィールドに埋込みURLパラメータを正規表現構文でアルファベット順に手動で入力します。「必要なリクエスト・パラメータ」セクションを使用する場合、埋込みURLパラメータは自動的に並べ替えられます。

たとえば、次のようなURLがあるとします。

http://my.oracle.com/servlet/page?_pageid=53&_dad=moc&_schema=MOC

URL一致条件」フィールドに、埋込みURLパラメータの正規表現を手動で並べ替えずに^/servlet/page\?_pageid=53&_dad=moc&_schema=MOC$と入力した場合、キャッシュ・ルールは、Oracle Web Cacheで使用されるURLの内部表現に一致しません。一致させるには、「URL式」フィールドに、次のように正規表現を入力する必要があります。

^/servlet/page\?_dad=moc&_pageid=53&_schema=MOC$

6.8.2 1つのオブジェクトに複数のバージョンがある場合のルールの設定の構成

複数バージョンを持つオブジェクトのキャッシュの詳細は、第6.5.1項を参照してください。

複数バージョンのオブジェクトに対するキャッシュ・ルールを指定するには、次の手順を実行します。

  1. キャッシュに影響するカテゴリCookieを持つサイトの場合は、Oracle Web Cacheが複数バージョンのオブジェクトのキャッシュおよび識別に使用する値を持つカテゴリCookieを指定します。

    1. Fusion Middleware Controlで「Webキャッシュ・メンバー」ページにナビゲートします。第2.6.2項を参照してください。

    2. Webキャッシュ」メニューから、「管理」→「複数バージョンのCookie」を選択します。

      「複数バージョンのCookie」ページが表示されます。

    3. 作成」をクリックします。

    4. Cookie名」フィールドに、Cookieの名前を入力します。

    5. このCookieが含まれていないバージョンのオブジェクトをキャッシュする場合は、「存在しない場合にキャッシュ」チェック・ボックスを選択します。このオプションを選択すると、Oracle Web Cacheで、このCookieが含まれていないクライアント・リクエストに対してキャッシュのオブジェクトが返されます。このCookieが含まれていないバージョンのオブジェクトをキャッシュしない場合は、オプションの選択を解除したままにします。

    6. 適用」をクリックします。

  2. キャッシュ・ルールを作成します。第6.8.1項を参照してください。

  3. 「キャッシュ・ルール」ページの「サイト固有のキャッシュ・ルール」セクションまたは「グローバル・キャッシュ・ルール」セクションで、作成したルールを選択し、「編集」をクリックします。

    「キャッシュ・ルールの作成」ページが表示されます。

  4. マルチ・バージョニング」タブをクリックします。

  5. CookieまたはHTTPリクエスト・ヘッダーに依存する複数バージョンのオブジェクトの場合、CookieまたはHTTPリクエスト・ヘッダーを指定して、Oracle Web Cacheが複数バージョンのオブジェクトをキャッシュして、該当するバージョンのリクエストを送信できるようにします。

    Cookieを使用する複数バージョンのオブジェクトの場合、ステップ1で作成したCookieを選択します。

    HTTPヘッダーを使用する複数バージョンのオブジェクトの場合、「HTTPリクエスト・ヘッダーごと」セクションで、「選択可能なヘッダー」から1つ以上のヘッダーを選択し、「移動」または「すべて移動」をクリックしてそれらのヘッダーを「選択したヘッダー」リストに移動します。

  6. OK」をクリックして変更を適用します。

  7. Oracle Web Cacheを再起動します。第2.13項を参照してください。

6.8.3 埋込みURLパラメータまたはPOST本体パラメータの値の除外

Oracle Web Cacheが埋込みURLパラメータまたはPOST本体パラメータの値を無視するように構成すると、Oracle Web Cacheは、同じページをリクエストする複数のセッションを1つのキャッシュ・オブジェクトで処理できます。Oracle Web Cacheは、最初のリクエストへのレスポンスをキャッシュし、そのページへの後続のリクエストをこのキャッシュから処理します。

パラメータの値を無視するようにOracle Web Cacheを構成することで、Oracle Web Cacheが1つのキャッシュ・オブジェクトで複数のセッションを処理できるようにする方法は、第6.5.2項を参照してください。

無視するパラメータを指定するには、2つの構成オプションがあります。次が可能です。

  • すべてのグローバル・キャッシュ・ルールとサイト固有のキャッシュ・ルールに自動的に適用されるグローバル・パラメータを確立します。

  • サイトのキャッシュ・ルールに自動的に適用されるそのサイト固有のパラメータを指定します。

グローバル・パラメータを確立するには、次の手順を実行します。

  1. Oracle Web Cache Managerのナビゲータ・フレームで、「Origin Servers, Sites, and Load Balancing」→「Site Definitions」を選択します。第2.7.2項を参照してください。

    「Site Definitions」ページが表示されます。

  2. Edit Global URL Parameters to Ignore」をクリックして、すべてのサイトを対象とするグローバル・パラメータを指定します。

    「Global URL Parameters to Ignore」ダイアログ・ボックスが表示されます。

  3. Parameters to Ignore」フィールドに、グローバル・パラメータを指定します。複数のパラメータを指定する場合は、各パラメータをカンマまたはスペースで区切ります。

  4. Submit」をクリックします。

  5. Apply Changes」をクリックします。

  6. Oracle Web Cacheを再起動します。第2.13項を参照してください。

  7. サイト固有のキャッシュ・ルールを作成します。第6.8.1項を参照してください。

サイト固有のパラメータを確立するには、次の手順に従います。

  1. Oracle Web Cache Managerのナビゲータ・フレームで、「Origin Servers, Sites, and Load Balancing」→「Site Definitions」を選択します。第2.7.2項を参照してください。

    「Site Definitions」ページが表示されます。

  2. サイトを選択し、「Show/Edit Selected」をクリックします。

    「Show/Edit Site Definition」ダイアログ・ボックスが表示されます。

  3. URL Parameters to Ignore」フィールドに、サイト固有のパラメータを指定します。複数のパラメータを指定する場合は、各パラメータをカンマまたはスペースで区切ります。

  4. Submit」をクリックします。

  5. Apply Changes」をクリックします。

  6. Oracle Web Cacheを再起動します。第2.13項を参照してください。

  7. サイト固有のキャッシュ・ルールを作成します。第6.8.1項を参照してください。

6.8.4 HTTPリクエスト・ヘッダーが含まれる複数バージョンのオブジェクトの類似ブラウザ・タイプの認識

Oracle Web Cacheでは、デフォルトでHTTPリクエスト・ヘッダーの値が解析されません。Fusion Middleware Controlで、User-Agentリクエスト・ヘッダー・フィールドに対して「他のヘッダーによる同じセレクタを持つ複数のオブジェクト」が選択されている場合、同じURLのUser-Agentリクエスト・ヘッダーの値が異なっていると、Oracle Web Cacheでは両方のページが別々にキャッシュされます。たとえば、異なるバージョンのInternet Explorerに対して、あるリクエストではUser-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows)というHTTPリクエスト・ヘッダーが送信され、別のリクエストではUser-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows; DigExt)というHTTPリクエスト・ヘッダーが送信された場合、Oracle Web Cacheでは2つの別々のページがキャッシュされます。

このデフォルトの動作をオーバーライドするには、特定のクライアントのUser-Agentパターン文字列を使用してOracle Web Cacheを構成します。複数のバージョンを持つオブジェクトの中で影響を受けるドキュメントに対して、Oracle Web Cacheはx-Oracle-Mapped-Userリクエスト・ヘッダー・フィールドを追加し、User-Agentの値全体ではなくこの文字列の値を使用します。

x-Oracle-Mapped-User: MAPPEDUSERAGENT_String

ブラウザ・タイプごとに同じページをキャッシュして表示するようにOracle Web Cacheを構成するには、次の手順を実行します。

  1. 第6.8.2項の説明に従って、User-Agentリクエスト・ヘッダーをサポートするページのキャッシュ・ルールを作成して、User-Agentヘッダーを確実に選択します。

  2. 次の場所にあるwebcache.xmlをテキスト・エディタで開きます。

    (UNIX) ORACLE_INSTANCE/<instance_name>/config/WebCache/<webcache_name>
    (Windows) ORACLE_INSTANCE\<instance_name>\config\WebCache\<webcache_name>
    
  3. GLOBALCACHINGRULES要素を探します。

  4. ブラウザ・タイプごとに、GLOBALCACHINGRULES要素の次の行に、次のサブ要素を追加します。

    <USERAGENTREMAPRULE MATCHSTRING="browser" MAPPEDUSERAGENT="x-Oracle-Mapped-User-Agent_value" MAPTYPE="USERAGENT"/>
    

    複数のエントリを入力する場合は、Oracle Web Cacheで一致させる方法に従ってエントリを並べます。これらのルールの順序は、キャッシュ・ルールの優先順位と同じように機能します。

    サブ要素の値の入力方法を、表6-5で説明します。

    表6-5 GLOBALCACHINGRULESのサブ要素

    サブ要素 説明

    MATCHSTRING

    受信リクエスト・ヘッダーとの一致に使用するパターンを入力します。

    注意: ワイルド・カード*を使用して、複数の異なるブラウザ・タイプにパターンを一致させることができます。たとえば、Mozilla*と入力すると、Mozillaのすべてのバリエーションが一致します。

    MAPPEDUSERAGENT

    Oracle Web Cacheによってx-Oracle-Mapped-User-Agentリクエスト・ヘッダーに追加されるUser-Agentパターンの一意の値を入力します。

    MAPTYPE

    User-Agentリクエスト・ヘッダーでパターンに一致させるUSERAGENTを入力します。


    次のwebcache.xmlファイルの一部は、User-Agentの再マッピングを示します。

    <USERAGENTREMAPRULE MATCHSTRING="MSIE *" MAPPEDUSERAGENT="MSIE" MAPTYPE="USERAGENT"/>
    <USERAGENTREMAPRULE MATCHSTRING="Mozilla*" MAPPEDUSERAGENT="MOZ" MAPTYPE="USERAGENT"/>
    

    受信リクエストに一致するルールが存在しない場合、Oracle Web Cacheはデフォルトのマッピングをリクエストに追加します。x-Oracle-Mapped-User-Agentヘッダーのデフォルト値はDEFAULT_USER_AGENTです。

    これらのマッピング・ルールは、すべての受信リクエストに対して実行されます。複数のマッピング・ルールを作成すると、パフォーマンスが低下する可能性があります。

  5. ステップ1で作成したキャッシュ・ルールについて、CACHEABILITYRULE<MULTIVERSIONHEADERSRULE>サブ要素を探します。

    <MULTIVERSIONHEADERSRULE>
         <HTTPHEADER NAME="User-Agent"/>
    </MULTIVERSIONHEADERSRULE>
    
  6. User-Agentの値全体ではなくMAPPEDUSERAGENT文字列の値に一致させるには、ルールのHTTPHEADER属性のUser-Agentヘッダーをx-Oracle-Mapped-User-Agentに変更します。

    <MULTIVERSIONHEADERSRULE>
         <HTTPHEADER NAME="x-Oracle-Mapped-User-Agent"/>
    </MULTIVERSIONHEADERSRULE>
    
  7. webcache.xmlを保存します。

  8. opmnctlを使用してOracle Web Cacheを再起動します。第2.13.1項を参照してください。

6.8.5 ルールのエラー・レスポンスの構成

HTTPエラー・レスポンスをキャッシュしてオリジン・サーバーのリソースを節約する方法については、第6.5.3項を参照してください。

エラー・レスポンスのキャッシュ・ルールを作成するには、次の手順を実行します。

  1. キャッシュ・ルールを作成します。第6.8.1項を参照してください。

  2. 「キャッシュ・ルール」ページの「サイト固有のキャッシュ・ルール」セクションまたは「グローバル・キャッシュ・ルール」セクションで、作成したルールを選択し、「編集」をクリックします。

    「キャッシュ・ルールの作成」ページが表示されます。

  3. エラー・レスポンス」タブをクリックします。

  4. このルールに対して、Oracle Web Cacheでキャッシュおよび表示するHTTPエラー・コードを選択します。

    オリジン・サーバーがHTTPエラー自体を生成するようにします。

  5. OK」をクリックして変更を適用します。

  6. Oracle Web Cacheを再起動します。第2.13項を参照してください。

6.8.6 セッション・キャッシュ・ルールの構成

Oracle Web Cacheで、セッションCookie、埋込みURLパラメータまたはPOST本体パラメータが存在するリクエストまたは存在しないリクエストが処理される方法については、第6.5.4項を参照してください。

Oracle Web Cacheによるセッション関連ページの送信方法を指定するには、次の手順を実行します。

  1. 「Webキャッシュ」メニューから、「管理」→「セッション構成」を選択します。

    「セッション定義」ページが表示されます。

  2. セッション定義」表でセッション定義を作成します。第2.12項を参照してください。

  3. セッション・ポリシーの設定を指定します。

    1. セッション・ポリシー構成」セクションで、「作成」をクリックします。

      表に新しい行が表示されます。

    2. セッション名」リストから、ステップ2で作成したセッションを選択します。

    3. キャッシュ」列で、Oracle Web CacheがCookieまたはパラメータを使用しないオブジェクトのバージョンをキャッシュする場合は「セッションを使用しない」チェック・ボックスを選択します。Oracle Web Cacheがセッション情報を持たないリクエストのキャッシュからオブジェクトを送信しない場合は、「いいえ」を選択します。

    4. キャッシュ」列で、Oracle Web CacheがCookieまたはパラメータを使用するオブジェクトのバージョンをキャッシュする場合は「セッションを使用」チェック・ボックスを選択します。

    5. デフォルト値の置換」列で、Oracle Web Cacheがオブジェクトの1つのバージョンのみキャッシュする場合は、このチェック・ボックスを選択します。Cookieまたはパラメータを持たないリクエストでは、デフォルト値が使用されます。Oracle Web Cacheがオブジェクトの2つの異なるバージョンをキャッシュする場合は、このチェック・ボックスを選択解除します。Oracle Web Cacheによって、Cookieまたはパラメータをサポートしているリクエストに対して1つのバージョンが返され、Cookieまたはパラメータをサポートしないリクエストに対してもう1つのバージョンが返されます。

  4. キャッシュ・ルールを作成します。第6.8.1項を参照してください。

  5. 次の手順を実行して、キャッシュ・ルールにセッション・ポリシーを関連付けます。

    1. 「キャッシュ・ルールの作成」ページの「サイト固有のキャッシュ・ルール」または「グローバル・キャッシュ・ルール」セクションで、作成したルールを選択し、「編集」をクリックします。

      「キャッシュ・ルールの編集」ページが表示されます。

    2. セッション」タブをクリックします。

    3. セッション定義」リストから、ステップ2で作成してステップ3でポリシーを定義したセッションを選択します。

    4. OK」をクリックして変更を適用します。

  6. Oracle Web Cacheを再起動します。第2.13項を参照してください。

6.8.7 セッション・エンコードされたURLに対するサポートの構成

HTMLハイパーリンク・タグのセッションを、セッションCookie、埋込みURLパラメータまたはPOST本体パラメータから取得したセッション値で置換するようにOracle Web Cacheを構成できます。セッション・エンコードされたURL内のセッション・パラメータ値が異なっていても、1つのオブジェクトが複数のセッション用にキャッシュされるようにOracle Web Cacheを構成する方法は、第6.5.5項を参照してください。

セッション・エンコードされたURLのセッションの値を置換するには、次のように設定します。

  1. Fusion Middleware Controlで「Webキャッシュ・メンバー」ページにナビゲートします。第2.6.2項を参照してください。

  2. 「Webキャッシュ」メニューから、「管理」→「セッション構成」を選択します。

    「セッション定義」ページが表示されます。

  3. セッション定義」表でセッション定義を作成します。第2.12項を参照してください。

    デフォルト値」フィールドにデータを入力するときには、埋込みURLパラメータの値に使用されるデフォルトの文字列を入力します。

    Oracle Web Cacheでは、埋込みURLパラメータの値が含まれないリクエストに対して、「デフォルト値」フィールドに入力した値が使用されます。このようなリクエストの場合、Oracle Web Cacheによって値がデフォルトの文字列に置換されます。文字列のデフォルトはdefaultです。たとえば、次の<A HREF=...>には、値を含まないsession_IDパラメータが含まれています。

    <A HREF="https://oraclestore.oracle.com/OA_HTML/ibeCCtpSctDspRte.jsp?section=11886&session_ID=">Master Index</A>
    

    文字列をdefaultに設定すると、Oracle Web Cacheによって値がdefaultに置換されます。

    <A HREF="https://oraclestore.oracle.com/OA_HTML/ibeCCtpSctDspRte.jsp?section=11886&session_ID=default">Master Index</A>
    
  4. キャッシュ・ルールを作成します。第6.8.1項を参照してください。

  5. 「キャッシュ・ルール」ページの「サイト固有のキャッシュ・ルール」セクションまたは「グローバル・キャッシュ・ルール」セクションで、作成したルールを選択し、「編集」をクリックします。

    「キャッシュ・ルールの作成」ページが表示されます。

  6. セッション」タブをクリックします。

  7. セッション・エンコードされたURLに対する処理」をクリックします。

  8. OK」をクリックして変更を適用します。

  9. Oracle Web Cacheを再起動します。第2.13項を参照してください。

6.8.8 セッションの確立を含むポピュラーなページに対するルールの構成

一部のWebサイトでは、ユーザーがページ間を移動する間、セッションを使用する必要があります。セッション要件を維持するには、それらのページ用にセッション・キャッシュ・ルールを作成します。これにより、セッションを持たないリクエストは必ずオリジン・サーバーに転送されます。

通常セッションの確立を必要とする一般的なサイトのエントリ・ページ(/など)は、セッションを確立するため、セッションを持っていないすべての新規ユーザーについてキャッシュ不可になります。セッションの確立を維持したままこれらのページをキャッシュするには、ご使用のアプリケーションに次のような変更を加えます。

  1. 実際のエントリ・ページにリダイレクトする、エントリURL(/など)用の空白のページを作成します。

  2. セッションCookieを持たない状態で空白のページがリクエストされた場合に、オリジン・サーバーによってセッションを作成するよう構成します。

  3. 第6.8.6項の説明に従って、実際のエントリ・ページおよび空白のページ用のセッション・キャッシュ・ルールを作成し、「キャッシュする」および「キャッシュしない」の両方のオプションをクリックします。

この構成により、エントリURLに対する最初のユーザー・リクエストはすべて、まず、最小限のリソースのみで生成される空白のページに進みます。クライアントは、Webアプリケーション・サーバーからレスポンスおよびセッションの確立を受信します。その後の、エントリ・ページに対するリダイレクトされたリクエストにはセッションが関連付けられ、エントリ・ページをキャッシュで処理することが可能になります。

セッションを必要とするページのセッションCookieを、Javascriptを使用して設定する方法でも解決できます。

  1. セッションCookieを設定するJavascriptがない場合は、作成します。

  2. セッションを必要とする各ページにJavascriptを追加します。

  3. 第6.8.1項および第6.8.6項の説明に従って、Javascriptおよびセッション・ページのキャッシュ・ルールを作成します。


注意:

Javascriptによるソリューションを使用すると、セッションを必要とするページについて、セッション・キャッシュ・ルールを作成する必要はありません。

6.9 キャッシュ・ルールのサマリー設定の監視

Fusion Middleware Controlでは、構成されているキャッシュ・ルールの有効性を評価するための統計を表示できます。

キャッシュ・ルールの統計を表示するには、次の手順を実行します。

  1. Fusion Middleware Controlで「Webキャッシュ・メンバー」ページにナビゲートします。第2.6.2項を参照してください。

  2. Webキャッシュ」メニューから、「管理」→「キャッシュ・ルール」を選択します。

    「キャッシュ・ルール」ページが表示されます。

  3. 右端までスクロールして、キャッシュ・ルールの統計を表示します。

    • マルチ・バージョニング: このキャッシュ・ルールに、複数バージョンを持つリクエストの設定が含まれているかどうかを示します。

    • セッション: このキャッシュ・ルールに、ユーザー・セッション情報を含むCookie、埋込みURLパラメータまたはPOST本体パラメータを使用するリクエストの設定が含まれているかどうかを示します。

    • エラー・レスポンス: このキャッシュ・ルールに、HTTPエラー・レスポンスを使用するリクエストの設定が含まれているかどうかを示します。

    • 一致: キャッシュ・ルールと一致したリクエストの数が表示されます。

Oracle Web Cacheによってキャッシュされたオブジェクトの表示方法は、第8.2項を参照してください。

6.10 Surrogate-Controlレスポンス・ヘッダーをキャッシュ・ルールの代替として使用

アプリケーション開発者は、Fusion Middleware Controlで設定するキャッシュ・ルールに加えて、またはその代替として、多くのキャッシュ属性をHTTPレスポンス・メッセージのヘッダーに格納することもできます。この機能により、Webアプリケーション・サーバーがFusion Middleware Controlインタフェースでの設定をオーバーライドしたり、サード・パーティ製キャッシュでOracle Web Cacheのキャッシュ属性を使用したりすることが可能になります。次の属性を除き、第6.8項に記載されているすべての属性がサポートされています。

この機能を使用するには、次の項の説明に従って、HTTPレスポンスにSurrogate-Controlレスポンス・ヘッダー・フィールドを設定します。

Oracle Web CacheがSurrogate-Controlレスポンス・ヘッダーのキャッシュ属性を使用する方法、およびOracle Web Cache Managerがキャッシュへのデータ格納を決定する方法は、第6.1項を参照してください。

6.10.1 Surrogate-Controlレスポンス・ヘッダー・フィールド

Surrogate-Controlレスポンス・ヘッダー・フィールドによって、アプリケーション開発者は、オブジェクトのキャッシュ属性を指定できます。このレスポンス・ヘッダー・フィールドを使用すると、管理インタフェースであるFusion Middleware ControlまたはOracle Web Cache Managerによって構成されたキャッシュ・ルールをWebアプリケーション・サーバー側でオーバーライドできます。

Surrogate-Controlレスポンス・ヘッダー・フィールドは次の構文をサポートします。

Surrogate-Control:[content=content_type, content_type,..]
[no-store][max-age=expiration_time[+removal_time]]
[vary=headers(header header...)][cookie(cookie_name cookie_name...)]
[compress=yes|no]

表6-6に、サポートされている制御ディレクティブを示します。

表6-6 Surrogate-Controlの制御ディレクティブ

制御ディレクティブ 説明

content

必須の処理の種類を指定します。

  • "ORAESI/9.0.4": コンテンツ・アセンブリおよびページの部分的なキャッシュに使用するOracle独自の拡張ESIタグを処理します。"ORAESI/9.0.4"では、10g(9.0.4)以降のOracle Web Cacheで提供されるすべてのESIタグがサポートされます。

  • "ORAESI/9.0.2": コンテンツ・アセンブリおよびページの部分的なキャッシュに使用するOracle独自の拡張ESIタグを処理します。"ORAESI/9.0.2"では、リリース2(9.0.2および9.0.3)のOracle Web Cacheで提供されるすべてのESIタグがサポートされます。

  • "ESI/1.0": コンテンツ・アセンブリおよびページの部分的なキャッシュに使用する標準ESIタグを処理します。

  • "ESI-Inline/1.0": <esi:inline>タグを処理します。

  • "ESI-INV/1.0": <esi:invalidate>タグを処理します。

  • "webcache/1.0": <!-- WEBCACHETAG-->タグおよび<!-- WEBCACHEEND-->タグを使用してパーソナライズ属性を処理します。

"ORAESI/9.0.2""ESI/1.0"および"ESI-Inline/1.0"は、"ORAESI/9.0.4"のサブセットです。このリリースでは、ESIアセンブリに"ORAESI/9.0.4"のみを、インライン無効化に"ESI-INV/1.0"のみを、パーソナライズ属性に"webcache/1.0"のみを指定する必要があります。

各処理バージョンに対してサポートされるESIタグの詳細は、第11章「ESI言語タグによる動的コンテンツのキャッシュ」を参照してください。

no-store

Oracle Web Cacheでオブジェクトをキャッシュしない場合に指定します。

vary

複数バージョンのオブジェクトをキャッシュして識別するようにOracle Web Cacheに指示するために、HTTPリクエスト・ヘッダーまたはCookieを指定します。次の書式を使用します。

vary=[headers(header[/f] *);] [cookies(cookie_name[/f] *)]

/fは、HTTPリクエスト・ヘッダーまたはCookieが存在した場合にのみオブジェクトのバージョンをキャッシュするようにOracle Web Cacheに指示する場合に指定します。HTTPリクエスト・ヘッダーまたはCookieが存在するかどうかに関係なくオブジェクトのバージョンをキャッシュするようにOracle Web Cacheに指示するには、/fを指定しません。

使用方法:

  • 少なくとも1つのHTTPヘッダーまたはCookieを指定します。

  • HTTPリクエスト・ヘッダーとCookieの両方を指定する場合は、Cookieの前にHTTPリクエスト・ヘッダーを指定します。

  • カッコとセミコロンの間にはスペースを入れないか、1つ以上スペースを空けます。

  • 複数のHTTPリクエスト・ヘッダーまたはCookieを指定するときは、HTTPリクエスト・ヘッダーとCookie名の間に1つ以上スペースを空けます。

compress

Oracle Web Cacheで、圧縮されたキャッシュ可能およびキャッシュ不可のオブジェクトをすべてのブラウザ・タイプに送信する場合はyesを指定します。Oracle Web Cacheで、圧縮されたキャッシュ可能およびキャッシュ不可のオブジェクトをブラウザに送信しない場合はnoを指定します。

この制御ディレクティブではブラウザ・タイプを指定することはできません。yesを指定してブラウザ・タイプを制限する必要がある場合は、第6.8.1項の説明に従って、圧縮キャッシュ・ルールを指定します。

Oracle Web Cacheが自動的に圧縮するものと圧縮しないものの詳細は、第1.2.5項を参照してください。

max-age

Oracle Web Cacheでオブジェクトをキャッシュする場合に指定します。

オブジェクトがキャッシュに入れられてから期限切れになるまでの秒数を指定します。オプションで、期限切れ後のオブジェクトを削除するまでの秒数を指定します。次の書式を使用します。

max-age=expiration_time[+removal_time]

使用方法:

  • デフォルトの削除までの時間は0秒。

  • max-age=infinityは、オブジェクトを期限切れにしないように指定します。


使用方法

  • 制御ディレクティブには大文字と小文字の区別があります。

  • content="ORAESI/9.0.4"content="ESI-Inline/1.0"content="ESI-INV/1.0"content="ESI/1.0"を、content="webcache/1.0"と同時に使用することはできません。

Edgeアーキテクチャ仕様についてはhttp://www.esi.org/spec.htmlを参照してください。これには、Surrogate-Controlレスポンス・ヘッダーに関する仕様情報が含まれます。

使用例

次の例では、Surrogate-Controlレスポンス・ヘッダー・フィールドにより、オブジェクトがキャッシュに入ってから30秒後に期限切れにし、期限切れ後60秒で削除するよう指定します。また、ESIタグが含まれているオブジェクトを処理するよう指定しています。

Surrogate-Control: max-age=30+60, content="ORAESI/9.0.4"

次の例では、Surrogate-Controlレスポンス・ヘッダー・フィールドにより、オブジェクトをキャッシュしないよう指定します。

Surrogate-Control: no-store

次の例では、Surrogate-Controlレスポンス・ヘッダー・フィールドは、content制御ディレクティブでESI処理を指定します。vary制御ディレクティブは、リクエストにHTTP Acceptリクエスト・ヘッダーが含まれているかどうかに関係なく、HTTP Acceptリクエスト・ヘッダー値に基づいて、複数バージョンのオブジェクトのバージョンをキャッシュすることを指定します。

Surrogate-Control: content="ORAESI/9.0.4", vary=headers(Accept)

次の同様の例では、Surrogate-Controlレスポンス・ヘッダー・フィールドは、content制御ディレクティブでESI処理を指定します。vary制御ディレクティブは、リクエストにAcceptおよびMyCustomHeaderヘッダーや、newsおよびsportsのCookieが含まれている場合にのみ、複数バージョンのオブジェクトのバージョンをキャッシュすることを指定します。

Surrogate-Control: content="ORAESI/9.0.4", vary=headers(Accept/f MyCustomHeader/f);cookies(news/f sports/f)