ヘッダーをスキップ

Oracle Application Server Web Cache 管理者ガイド
10gリリース2(10.1.2)
B15770-04
目次
目次
索引
索引

戻る 次へ

12
キャッシュ・ルールの作成

この章では、キャッシュ・ルールの構成方法について説明します。

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

キャッシュ・ルールについて

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

Oracle Enterprise Manager 10g Application Server ControlコンソールまたはOracleAS Web Cache Managerを使用して、URLに基づいたキャッシュ属性を指定することでキャッシュ・ルールを構成するか、またはSurrogate-Controlレスポンス・ヘッダー・フィールド内の特定のオブジェクトに対してキャッシュ属性を構成します。クライアントによってそのURL内のオブジェクトがリクエストされるまで、それらのオブジェクトはキャッシュに格納されません。OracleAS Web Cacheは、オブジェクトが初めてリクエストされたとき、Surrogate-Capabilityリクエスト・ヘッダー・フィールドをオブジェクトに追加します。Surrogate-Capabilityリクエスト・ヘッダー・フィールドは、オブジェクトがキャッシュを通過してきたことを示します。

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

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

  2. Application Server ControlコンソールまたはOracleAS Web Cache Managerで構成されたキャッシュ・ルール

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

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

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

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

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

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

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

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

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

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

キャッシュ・ルールまたはSurrogate-Controlレスポンス・ヘッダーが指定されていない場合、OracleAS Web CacheはHTTPプロキシ・キャッシュと同じように動作します。つまり、HTTPヘッダー情報でキャッシュするページを決定します。通常、HTTPプロキシ・キャッシュには、静的コンテンツを持つページのみ格納されます。


注意

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

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

 

関連項目

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

ルールの作成

キャッシュ・ルールを作成するには、次の項目を指定します。

セレクタ

OracleAS Web Cacheはクライアント・リクエストを受信すると、セレクタを使用してキャッシュ・ルールをフィルタ処理し、リクエストに対して適切なルールを探します。キャッシュ・ルールを作成するとき、次のセレクタを指定します。

ファイル拡張子表現タイプ

ファイル拡張子によって、gifなどの共有ファイル拡張子タイプを指定します。ファイル拡張子を指定するには、拡張子を入力します。OracleAS Web Cacheでは、内部的にファイル拡張子にピリオド(.)が付くため、ピリオドを入力する必要はありません。たとえば、gif.gifは両方とも有効な入力です。

パス接頭辞表現タイプ

パス接頭辞によって、ディレクトリ構造内を横断してオブジェクトを探します。OracleAS Web Cacheでは、内部的にパスにhttp://host_name:port/または"/"が付くため、この情報を入力する必要はありません。

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

たとえば、パス接頭辞http://www.company.com/contactsまたは/contactsは、定義済サイトwww.company.comcontactsディレクトリ下にあるオブジェクトに一致します。

正規表現

OracleAS Web Cacheでは、Netscape Proxy Server 2.5でサポートされている、URL用POSIX 1003拡張正規表現に基づく正規表現構文がサポートされています。

POSIX正規表現を使用する際、次の構文規則に注意してください。

表12-1に、キャッシュするコンテンツと、そのコンテンツに対応するキャッシュ・ルールの正規表現構文の入力方法の例を示します。

表12-1    正規表現の例 
キャッシュするコンテンツ  正規表現構文 

/machine/docで始まり、*.gifで終わるURL 

^/machine/doc/.*¥.gif$ 

/robots.txtファイル 

^/robots.txt$ 

new_employeeパッケージ内のすべてのプロシージャ 

^/pls/enroll_db/new_employee 

キャッシュ・ポリシー

キャッシュ・ポリシーは、オブジェクトをキャッシュするかどうかを指定します。キャッシュ・ポリシー「Cache」を指定すると、OracleAS Web Cacheはキャッシュ内のオブジェクトによってリクエストを処理します。キャッシュ・ポリシー「Don't Cache」を指定すると、OracleAS Web Cacheはリクエストをオリジナル・サーバーに転送し、コンテンツをキャッシュしません。

通常キャッシュを不可にするコンテンツの例は、更新トランザクション、ショッピング・カートの表示画面および個人アカウント情報の表示画面などです。OracleAS Web Cacheでキャッシュ・ルールを設定する最も簡単な方法の1つは、最初にキャッシュ不可のコンテンツを指定し、次に、キャッシュするコンテンツすべてに対応する広範囲のルールを使用します。または、最初にキャッシュするコンテンツを指定し、次にキャッシュ不可のコンテンツすべてに対応するルールを指定します。実際には、キャッシュ可と不可の場合のルールを混在して指定可能です。

キャッシュ・キー・ポリシー

キャッシュ・キー・ポリシーによって、OracleAS Web Cacheはリクエストをキャッシュ内の適切なオブジェクトにマップできます。OracleAS Web Cacheは、セレクタとキャッシュ・ポリシーを使用してリクエストをフィルタ処理した後、キャッシュ・キー・ポリシーを使用してキャッシュ内で正しいオブジェクトを探します。

OracleAS Web Cacheでは、次の中の指定された属性を使用してキャッシュ・キーが構成されます。

これらの属性によって、キャッシュされるオブジェクトの一意のIDが作成されます。OracleAS Web CacheはこのIDを使用してリクエストを参照します。

優先順位

キャッシュ・ルールの優先順位を指定します。優先順位の高いルールが先に一致判定されます。

キャッシュ可能と不可のオブジェクトにキャッシュ・ルールの順序を指定する場合は、キャッシュ不可のオブジェクトの優先順位をキャッシュ可能のオブジェクトより高くします。たとえば、/cec/cstage?ecaction=ecpassthru2以外の/cec/cstage?ecaction=ecpassthruが含まれているURLをすべてキャッシュする場合は、表12-2に示す順序で、正規表現またはパス接頭辞の構文を使用してルールを入力します。

表12-2    キャッシュ可能とキャッシュ不可のURLに対する優先順位の例 
優先順位  表現タイプ  URL表現  HTTPメソッド  キャッシュ・ポリシー 

正規表現

パス接頭辞 

^/cec/cstage¥?ecaction=ecpassthru2

/cec/cstage¥?ecaction=ecpassthru2 

GETGET with query string 

キャッシュしない 

正規表現

パス接頭辞 

^/cec/cstage¥?ecaction=ecpassthru.*

/cec/cstage¥?ecaction=ecpassthru 

GETGET with query string 

キャッシュする 

順序を逆にすると、/cec/cstage?ecaction=ecpassthru2を含め、/cec/cstage?ecaction=ecpassthruで始まるすべてのオブジェクトがキャッシュされます。


注意

サイト別キャッシュ・ルールには、グローバル・ルールよりも高い優先順位が与えられます。 


表12-3に示すルールでは、ルール2によってGETメソッドおよび問合せ文字列が含まれるGETメソッドを使用するURLのオブジェクトがキャッシュされ、ルール3によってPOSTメソッドを使用しPOSTのボディがaction=searchに一致するURLのオブジェクトがキャッシュされます。

表12-3    異なるHTTPメソッドの優先順位の例 
優先順位  表現タイプ  URL表現  HTTPメソッド  POSTボディ表現  キャッシュ・ポリシー 

正規表現

パス接頭辞 

^/cec/cstage¥?ecaction=ecpassthru2

^/cec/cstage¥?ecaction=ecpassthru2 

GETGET with query string 

N/A 

キャッシュしない 

正規表現

パス接頭辞 

^/cec/cstage¥?ecaction=ecpassthru.*

/cec/cstage¥?ecaction=ecpassthru 

GETGET with query string 

N/A 

キャッシュする 

正規表現

パス接頭辞 

^/cec/cstage¥?ecaction=ecpassthru.*

/cec/cstage¥?ecaction=ecpassthru 

POST 

action=search 

キャッシュする 

デフォルトのキャッシュ・ルール

OracleAS Web Cacheをインストールすると、サイト別キャッシュ・ルールおよびグローバル・キャッシュ・ルールが、構成されたデフォルトのサイトに対して設定されます。

図12-1は、Application Server Controlコンソールの「ルール」ページ(Web Cacheホーム・ページ→「管理」タブ→「プロパティ」→「アプリケーション」→「ルール」)を示します。また、図12-2は、OracleAS Web Cache Managerの「Caching, Personalization, and Compression Rules」ページ(「Rules for Caching, Personalization, and Compression」→「Caching, Personalization, and Compression Rules」)を示します。

図12-1    Application Server Controlコンソールのデフォルトのキャッシュ・ルール


画像の説明

図12-2    OracleAS Web Cache Managerのデフォルトのキャッシュ・ルール


画像の説明

表12-4に、デフォルトのキャッシュ・ルールの説明を示します。ルール1はOracle Application Server Wireless用です。Oracle Application Serverのこのコンポーネントを使用しない場合、このルールは削除できます。

表12-4    デフォルトのキャッシュ・ルール 
優先順位  表現タイプ  URL表現  HTTPメソッド  キャッシュする/しない  説明 

正規表現 

/ptg/rm 

GET、GET with query string 

キャッシュする 

デフォルトのOracle Application Server Wirelessサーブレットをキャッシュします。このルールは、WirelessでOracleAS Web Cacheを使用して変換をキャッシュするために必要です。Wirelessサーブレットのマウントポイントを/ptg/rm以外に変更する場合、このルールを更新して有効にします。 

正規表現 

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

GET 

キャッシュする 

すべての.gif.jpg.jpeg.pngおよび.bmpファイルをキャッシュします。 

ファイル拡張子 

.css 

GET 

キャッシュする 

.css(カスケード・スタイル・シート)ファイルをキャッシュします。 

正規表現 

/jsLibs/.*¥.js$ 

GET 

キャッシュする 

圧縮せずにすべてのUIX Oracle JDeveloper .js(JavaScript)ファイルをキャッシュします。 

ファイル拡張子 

.js 

GET 

キャッシュする 

すべての.jsファイルをキャッシュします。Netscapeには、圧縮したJavaScriptファイルに関する既知の問題があります。 

正規表現 

¥.html?$ 

GET 

キャッシュする 

すべての.htmおよび.htmlファイルをキャッシュします。

注意: HTTP認証レスポンス・ヘッダーが含まれるHTMLページはキャッシュされます。HTTPの認証タイプの1つであるBasic認証をサポートしているページをキャッシュしないようにするには、認証を要求するページを含めないように、キャッシュ・ルールを変更します。 

ファイル拡張子 

.swf 

GET 

キャッシュする 

すべての.swfファイルをキャッシュします。 

関連項目

Oracle Application Server Wirelessの詳細は、『Oracle Application Server Wireless管理者ガイド』を参照してください。 

キャッシュ・ルールの構成とルールの関連付け

この項では、キャッシュ・ルールを構成し、そのルールを複数のURLに関連付ける方法を説明します。次の項目が含まれます。

作業1: キャッシュ・ルールの作成

Application Server Controlコンソールでキャッシュ・ルールを作成するには、Web Cacheホーム・ページ→「管理」タブ→「プロパティ」→「アプリケーション」→「ルール」にナビゲートします。

関連項目

詳細は、Enterprise Managerオンライン・ヘルプの「キャッシュ・ルールの一般設定の構成」を参照してください。 

OracleAS Web Cache Managerでキャッシュ・ルールを作成する手順は、次のとおりです。

  1. ナビゲータ・フレームで、「Rules for Caching, Personalization, and Compression」→「Caching, Personalization, and Compression Rules」を選択します。

    「Caching, Personalization, and Compression Rules」ページが表示されます。

  2. For Site」リストから、サイト別キャッシュ・ルールを表示または作成するWebサイトを選択します。

  3. ルールが存在しない場合は、「Create Site Specific Rule」または「Create Global Rule」を選択します。ルールがすでに存在する場合は、ルールを選択し、「Insert Above」または「Insert Below」を選択します。

    「Edit/Add Caching, Personalization, and Compression Rule」ダイアログ・ボックスが表示されます。

  4. キャッシュ・ルールを適用するオブジェクトを指定します。

    1. Expression Type」リストから、次のオプションのうちの1つを選択します。

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

      • Path Prefix: パス接頭辞に一致するオブジェクトにキャッシュ・ルールを適用します。

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

    2. URL Expression」フィールドで、「Expression Type」に選択した値に応じて式を指定します。

      • File Extension: ファイル拡張子を入力します。OracleAS Web Cacheでは、内部的にファイル拡張子にピリオド(.)が付くため、ピリオドを入力する必要はありません。

      • Path Prefix: オブジェクトのパス接頭辞を入力します。OracleAS Web Cacheでは、内部的にパスにhttp://host_name:port/または"/"が付くため、この情報を入力する必要はありません。

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

      • Regular Expression: オブジェクトの正規表現を入力します。URLの始まりを示す場合は「^」、およびURLの終わりを示す場合は「$」を使用することを忘れないでください。

        関連項目: キャッシュ・ルールの構文については、「セレクタ」を参照してください。

  5. HTTP Method(s)」セクションで、「GET」、「GET with query string」(問合せ文字列が含まれるGET)、または「POST」HTTPリクエスト・メソッドを選択し、キャッシュするオブジェクトのメソッドを選択します。

    複数のリクエスト・メソッドを選択可能です。


    注意

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


  6. ファイル拡張子とパス接頭辞の表現タイプの場合は、「URL and POST Body Parameters」セクションで、埋込みURLパラメータまたはPOSTボディ・パラメータとその値を、対応する「Name」フィールドと「Value」フィールド(オプション)に入力します。次に、「Add」をクリックします。

    正規表現の表現タイプの場合は、「URL Expression」フィールドに埋込みURLパラメータを入力してアルファベット順に並べ替える必要があります。

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

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

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

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

    ^/servlet/page¥?_dad=moc&_pageid=53&_schema=MOC$
    
    
  7. HTTP Method(s)」セクションで「POST」を選択し、「URL and POST Body Parameters」セクションでPOSTボディ・パラメータを指定しなかった場合は、「POST Body Expression」フィールドでHTTP POSTボディを指定します。

    このルールをすべてのPOSTリクエスト・ボディに適用する場合、「.*」をフィールドに入力します。

  8. URLに一致するオブジェクトについて、「Caching Policy」で「Cache」または「Don't Cache」を選択します。

  9. ESI Propagation Policy」で、「Propagate」または「Don't Propagate」を選択します。デフォルトは「Propagate」です。

  10. オプションで、ルールの意味がわかるように、「Comment」フィールドにキャッシュ・ルールに関するコメントを入力します。

  11. Compression」セクションで、次の選択を行います。

    • 圧縮されたキャッシュ可能およびキャッシュ不可のオブジェクトをブラウザで使用しない場合は「None」を選択します。

    • 圧縮されたオブジェクトをすべてのブラウザ・タイプで使用する場合は「For all browsers」を選択します。

    • 圧縮されたオブジェクトをNetscape以外のブラウザ・タイプで使用する場合は「For non-Netscape browsers only」を選択します。

    圧縮が有効な場合でも、次のものはOracleAS Web Cacheによって圧縮されません。

    • GIF、JPEG、PDF、PNG、SWFおよびZIPファイル。

    • 通常、圧縮を示すために使用されるContent-Encodingレスポンス・ヘッダー・フィールドが含まれるレスポンス。

    • 通常、添付に使用されるContent-Dispositionレスポンス・ヘッダー・フィールドが含まれるレスポンス。

      Content-Dispositionレスポンス・ヘッダー・フィールドを持つレスポンスが圧縮されている場合は、間違ったファイル名が表示されます。

    • JavaScriptファイル(一部のブラウザ)。

      圧縮されたJavaScriptファイルによって一部のブラウザが不安定になり、障害が発生することもあります。この問題は、scriptタグのsrc属性を使用して参照されているファイルにのみ影響を及ぼし、インラインでJavaScriptを含んでいるファイルは影響を受けません。

      OracleAS Web Cacheでは、Netscape 4.xおよびInternet Explorer 5.5ブラウザの場合、JavaScriptファイルは圧縮されません。その他のブラウザでは、圧縮が有効な場合、ファイルが圧縮されます。

    • カスケード・スタイル・シート(.css)(一部のブラウザ)。

      OracleAS Web Cacheでは、Netscape 4.xおよびInternet Explorer 5.5ブラウザの場合、カスケード・スタイル・シートは圧縮されません。これらのブラウザでは、カスケード・スタイル・シートが圧縮されている場合、背景イメージなどの背景属性が出力に表示されないことがあります。

    すでにWinZipやGZIPなどの圧縮ユーティリティで圧縮済の実行ファイルやその他のファイルは圧縮しないことをお薦めします。これらのファイルを圧縮しても、圧縮の利点は得られず、オーバーヘッドが増加します。

    関連項目

    圧縮の概要は、「圧縮」を参照してください。 

  12. Enabled」セクションで、キャッシュ・ルールを有効にする場合は「Yes」を、無効にする場合は「No」を選択します。

    テスト・システムのキャッシュ・ルールの選択は解除することをお薦めします。

  13. Cache Policy」セクションで「Cache」を選択した場合は、「表12-5に示すオプションの中から適用するオプションを選択して、「Submit」をクリックします。

    表12-5    「Cache Policy」で「Cache」を選択した場合のルールのオプション 
    オプション  説明 

    Expiration Policy 

    リストから、オブジェクトに適用する期限切れポリシーを選択します。オブジェクトに適した期限切れポリシーが存在しない場合は、ナビゲータ・フレームで「Rules for Caching, Personalization, and Compression」→「Expiration Policy Definitions」を選択し、新しいポリシーを作成します。

    関連項目:

     

    Multiple Objects with the Same Selector by Cookies 

    カテゴリCookieの値に依存する1つのオブジェクトの複数バージョンをキャッシュするには、必要なCookieを選択します。これらのオブジェクトに適用できるCookieが存在しない場合は、ナビゲータ・フレームで「Rules for Caching, Personalization, and Compression」→「Cookie Definitions」を選択し、新しいCookie定義を作成します。

    関連項目:

     

    Multiple Objects with the Same Selector by Other Headers 

    HTTPリクエスト・ヘッダーの値に依存する1つのオブジェクトの複数のバージョンをキャッシュするには、次の中からどれか1つ以上を選択します。

    • Accept: レスポンスに使用可能なメディア・タイプを指定する。

    • Accept-Charset: レスポンスに使用可能なキャラクタ・セットを指定する。

    • Accept-Encoding: レスポンスのコンテンツに使用可能なエンコーディングを制限する。

    • Accept-Language: レスポンスに使用する言語セットを指定する。

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

    次に、Netscape 4.6ブラウザでHTTPリクエスト・ヘッダーを使用して作成されたリクエストの例を示します。

    User-Agent: Mozilla/4.61 [en] (WinNT; U)
    Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png,*/*s
    Accept-Encoding: gzip
    Accept-Language: en
    Accept-Charset: iso-8859-1,*,utf-8

    注意: OracleAS Web Cacheでは、これらのHTTPリクエスト・ヘッダーの値を解析しません。2つのページの値が異なる場合、OracleAS Web Cacheによりそれらのページは別々にキャッシュされます。この問題は、User-Agentリクエスト・ヘッダーの場合は特に処理が複雑で、ブラウザのタイプ、バージョンおよびオペレーティング・システムごとに複数のキャッシュ・エントリが作成される場合があります。User-Agentリクエスト・ヘッダーに対するこの動作をオーバーライドするには、「HTTPリクエスト・ヘッダーが含まれる複数バージョンのオブジェクトの類似ブラウザ・タイプの認識」の説明に従って、同じブラウザ・タイプの同じページをキャッシュして表示するようにOracleAS Web Cacheを構成します。

    関連項目: 概要は、「1つのオブジェクトの複数のバージョン」を参照してください。 

    Session Caching Policies 

    Cookie、埋込みURLパラメータまたはPOSTボディ・パラメータ内に含まれているセッション情報やパーソナライズ属性情報に基づいてオブジェクトをキャッシュまたは表示するには、セッションおよび対応するポリシーを選択します。これらのオブジェクトに適用できるセッションが存在しない場合は、ナビゲータ・フレームで「Rules for Caching, Personalization, and Compression」→「Session Definitions」を選択し、新しいセッションを作成します。

    関連項目:

     

    Session-Encoded URL 

    セッション・エンコードされたURLで使用されるセッション値、またはHTMLタグ<!-- WEBCACHETAG-->および<!-- WEBCACHEEND-->で囲まれたパーソナライズ属性値を置き換えない場合は、「No」を選択します。

    セッション値またはパーソナライズ属性値を置き換える場合は、「Yes」を選択します。OracleAS Web Cacheでは、Cookie、埋込みURLパラメータまたはPOSTボディ・パラメータの値に基づいて値情報が置換されます。次にOracleAS Web Cacheによって、Cookieまたはパラメータが含まれているクライアント・リクエストのページが表示されます。

    関連項目:

     

    Avoid Unwanted Copies  

    OracleAS Web Cacheが値を無視する追加の埋込みURLまたはPOSTボディ・パラメータを定義するには、「Global URL Parameters to Ignore」をクリックしてすべてのキャッシュ・ルールにパラメータを適用するか、「Site-Specific URL Parameters to Ignore」をクリックしてこのサイトに構成されているルールにパラメータを適用します。

    埋込みURLパラメータまたはPOSTのボディ・パラメータの値を無視するOracleAS Web Cacheを構成することにより、OracleAS Web Cacheが、同じページをリクエストする複数のセッションに対して1つのキャッシュ・オブジェクトを送信するようにできます。このように構成すると、OracleAS Web Cacheでは、最初のリクエストに対するレスポンスがキャッシュされ、同じページへの後続のリクエストに対しては、キャッシュからページが渡されます。

    関連項目:

     

    HTTP Error Caching 

    ルールに対して、OracleAS Web Cacheでキャッシュおよび表示するHTTPエラー・コードを入力します。複数のコードを入力する場合は、カンマで区切ります。

    オリジナル・サーバーで問題が発生し、このルールに対するHTTPレスポンスのステータスが200 OKでない場合、OracleAS Web CacheはキャッシュしたHTTPエラーを表示して、オリジナル・サーバーのリソースを節約します。オリジナル・サーバーは、HTTPエラー自体を生成する必要があります。

    OracleAS Web Cacheは、ルールの期限切れポリシーに従ってエラー・ページをキャッシュします。

    問題が解決した後は、HTTPエラーを無効にしてください。

    関連項目: 第13章「無効化リクエストの送信」 

  14. 各キャッシュ・ルールに対して、ステップ2から13を繰り返します。


    ヒント

    アプリケーション開発者は、Application Server ControlコンソールまたはOracleAS Web Cache Managerで設定するキャッシュ・ルールに加え、またはその代替として、多くのキャッシュ属性をHTTPレスポンス・メッセージのヘッダーに格納することも可能です。詳細は、「Surrogate-Controlレスポンス・ヘッダーをキャッシュ・ルールの代替として使用」を参照してください。 


作業2: ルールの優先順位の決定

キャッシュ・ルールを構成した後は、優先順位を決定します。最初に一致したルールのみが適用されます。

ルールに優先順位を割り当てるには、次の手順を実行します。

  1. 「Caching, Personalization, and Compression Rules」ページで、キャッシュ・ルールを選択し、「Move Up」または「Move Down」を選択してルールを優先順位に合せて並べます。

  2. 次のようにして、変更を適用し、OracleAS Web Cacheを再起動します。

    1. OracleAS Web Cache Managerのメイン・ウィンドウで、「Apply Changes」を選択します。

    2. 「Cache Operations」ページで、キャッシュを選択し、「Restart」をクリックしてOracleAS Web Cacheを再起動します。

作業3: 複数のルールとキャッシュ・ポリシー機能の関連付け(オプション)

OracleAS Web Cache Managerでは、次のキャッシュ・ポリシー機能にルールのグループを関連付けることができます。

複数のルールを1つのキャッシュ・ポリシー機能に関連付けるには、次の手順を実行します。

  1. ナビゲータ・フレームで、「Rule Association」→「Policy Association」を選択します。

    キャッシュ・ポリシー機能の「Association」ページが表示されます。

  2. 「Association」ページで、ポリシーを選択し、「Change Rule Association」をクリックします。

    キャッシュ・ポリシー機能の「Change Association」ダイアログ・ボックスが表示されます。

  3. 右側のリストで1つ以上のキャッシュ・ルールを選択し、「Make Association」をクリックします。

    必要なキャッシュ・ルールが存在しない場合は、「キャッシュ・ルールの構成とルールの関連付け」の説明に従ってキャッシュ・ルールを作成します。

  4. 次のようにして、変更を適用し、OracleAS Web Cacheを再起動します。

    1. OracleAS Web Cache Managerのメイン・ウィンドウで、「Apply Changes」をクリックします。

    2. 「Cache Operations」ページで、キャッシュを選択し、「Restart」をクリックしてOracleAS Web Cacheを再起動します。

キャッシュ・ポリシー機能の追加構成

この項には、各キャッシュ・ポリシー機能の構成に関する次の項目が含まれます。

期限切れポリシーの構成

キャッシュ内のオブジェクトをいつ期限切れにするかを指定するポリシーを作成できます。さらに、オブジェクトが期限切れになった後に、キャッシュ内に存続する期間を指定することも可能です。オブジェクトが期限切れになると、すぐに削除処理が行われるか、または、オリジナル・サーバーの容量によって許可される最終的な期限切れ時に削除処理が行われます。

Application Server Controlコンソールで期限切れポリシーを構成するには、Web Cacheホーム・ページ→「管理」タブ→「プロパティ」→「アプリケーション」→「ルール」→「有効期限ポリシー」にナビゲートします。

関連項目

詳細は、Enterprise Managerオンライン・ヘルプの「期限切れポリシーの構成」を参照してください。 

OracleAS Web Cache Managerで有効期限ポリシーを作成する手順は、次のとおりです。

  1. ナビゲータ・フレームで、「Rules for Caching, Personalization, and Compression」→「Expiration Policy Definitions」を選択します。

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

  2. 「Expiration Policy Definitions」ページで、「Add」をクリックします。

    「Create Expiration Policy」ダイアログ・ボックスが表示されます。

  3. Expire」セクションで、次のオプションのうちの1つを選択し、オブジェクトをいつ期限切れにするかを指定します。

    • <time> after cache entry: オブジェクトがキャッシュに入った時間によって期限を設定する場合は、このオプションを選択します。数値を入力し、秒数などの間隔を選択して、オブジェクトをいつ期限切れにするかを指定します。

    • <time> after object creation: オブジェクトが作成された時間によって期限を設定する場合は、このオプションを選択します。数値を入力し、秒数などの間隔を選択して、オブジェクトをいつ期限切れにするかを指定します。

    • as per HTTP Expires header: HTTPのExpiresレスポンス・ヘッダー・フィールドに従う場合は、このオプションを選択します。これはデフォルトです。このオプションを使用するには、オブジェクトでHTTPのExpiresまたはCache-Controlレスポンス・ヘッダー・フィールドを使用している必要があります。

    最初の2つのオプションは、OracleAS Web Cache固有のルールで期限を設定しますが、3つ目のオプションでは、HTTPのExpiresまたはCache-Controlレスポンス・ヘッダー・フィールドを使用してオブジェクトに設定されている期限切れポリシーを認識します。

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

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

  6. 各期限切れポリシーに対して、ステップ3から6を繰り返します。

  7. ナビゲータ・フレームで、「Rule Association」→「Expiration Policy Association」を選択します。

    「Expiration Policy Association」ページが表示されます。

  8. 「Expiration Policy Association」ページで、新規作成したポリシーを選択し、「Change Rule Association」をクリックします。

    「Change Expiration Association」ダイアログ・ボックスが表示されます。

  9. 右側のリストでキャッシュ・ルールを選択し、「Make Association」をクリックします。

    キャッシュ・ルールが左のリストに移動し、ダイアログ・ボックスが閉じます。

    必要なキャッシュ・ルールが存在しない場合は、「キャッシュ・ルールの構成とルールの関連付け」の説明に従ってキャッシュ・ルールを作成します。ステップ13で、「Edit/Add Caching, Personalization, and Compression Rule」ダイアログ・ボックスの「Expiration Policy」行から、期限切れルールを選択します。

  10. 次のようにして、変更を適用し、OracleAS Web Cacheを再起動します。

    1. OracleAS Web Cache Managerのメイン・ウィンドウで、「Apply Changes」をクリックします。

    2. 「Cache Operations」ページで、キャッシュを選択し、「Restart」をクリックしてOracleAS Web Cacheを再起動します。

Cookieが含まれる複数バージョンのオブジェクトのCookie定義構成

関連項目

概要と使用例は、「1つのオブジェクトの複数のバージョン」を参照してください。 

OracleAS Web Cacheで、複数バージョンのオブジェクトのキャッシュおよび識別に使用する値を持つカテゴリCookieを指定できます。

Application Server Controlコンソールで複数のバージョンを持つURLのCookieの値を指定するには、Web Cacheホーム・ページ→「管理」タブ→「プロパティ」→「アプリケーション」→「ルール」にナビゲートします。

関連項目

詳細は、Enterprise Managerオンライン・ヘルプの「キャッシュ・ルールの拡張設定の構成」を参照してください。 

OracleAS Web Cache Managerで複数のバージョンを持つURLのCookieの値を指定するには、次の手順を実行します。

  1. ナビゲータ・フレームで、「Rules for Caching, Personalization, and Compression」→「Cookie Definitions」を選択します。

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

  2. 「Cookie Definitions」ページで、「Add」をクリックします。

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

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

  4. Also cache objects whose requests do not contain this cookie?」プロンプトで、「Yes」または「No」を選択します。

    • このCookieが含まれていないバージョンのオブジェクトをキャッシュする場合、「Yes」を選択します。このオプションを選択すると、OracleAS Web Cacheで、このCookieが含まれていないクライアント・リクエストに対してキャッシュのオブジェクトが返されます。

    • このCookieが含まれていないバージョンのオブジェクトをキャッシュしない場合、「No」を選択します。

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

  6. ナビゲータ・フレームで、「Rule Association」→「Cookie Association」を選択します。

    「Cookie Association」ページが表示されます。

  7. 「Cookie Association」ページで、新規作成したCookie定義を選択し、「Change Rule Association」をクリックします。

    「Change Cookie Association」ダイアログ・ボックスが表示されます。

  8. 右側のリストでキャッシュ・ルールを選択し、「Make Association」をクリックします。

    キャッシュ・ルールが左のリストに移動し、ダイアログ・ボックスが閉じます。

    必要なキャッシュ・ルールが存在しない場合は、「キャッシュ・ルールの構成とルールの関連付け」の説明に従ってキャッシュ・ルールを作成します。ステップ13で、「Edit/Add Caching, Personalization, and Compression Rule」ダイアログ・ボックスの「Multiple Objects with the Same Selector by Cookies」フィールドからCookieを選択します。

  9. 次のようにして、変更を適用し、OracleAS Web Cacheを再起動します。

    1. OracleAS Web Cache Managerのメイン・ウィンドウで、「Apply Changes」をクリックします。

    2. 「Cache Operations」ページで、キャッシュを選択し、「Restart」をクリックしてOracleAS Web Cacheを再起動します。

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

デフォルトでは、OracleAS Web CacheはHTTPリクエスト・ヘッダーの値を解析しません。OracleAS Web Cache Managerで、User-Agentリクエスト・ヘッダー・フィールドに対して「Multiple Objects with the Same Selector by Other Headers」が選択され、同じURLのUser-Agentリクエスト・ヘッダーの値が異なる場合、OracleAS 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リクエスト・ヘッダーが送信された場合、OracleAS Web Cacheでは2つのページが別々にキャッシュされます。

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

x-Oracle-Mapped-User: MAPPEDUSERAGENT_String

関連項目

概要と使用例は、「1つのオブジェクトの複数のバージョン」を参照してください。 

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

  1. 「キャッシュ・ルールの構成とルールの関連付け」の説明に従って、User-Agentリクエスト・ヘッダーをサポートするページのキャッシュ・ルールを作成します。ステップ13で、「Edit/Add Caching, Personalization, and Compression Rule」ダイアログ・ボックスの「Multiple Objects with the Same Selector by Other Headers」セクションからUser-Agentを選択します。

  2. テキスト・エディタを使用して、webcache.xmlファイルを開きます。

  3. GLOBALCACHINGRULES要素を探します。

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

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

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

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

    表12-6    GLOBALCACHINGRULESのサブ要素 
    サブ要素  説明 

    MATCHSTRING 

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

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

    MAPPEDUSERAGENT 

    OracleAS 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"/>
    
    

    受信リクエストに一致するルールが存在しない場合、OracleAS 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. 次のコマンドを使用して、OracleAS Web Cacheを再起動します。

    opmnctl restartproc ias-component=WebCache
    

埋込みURLパラメータまたはPOSTのボディ・パラメータの値を除外するOracleAS Web Cacheの構成

埋込みURLパラメータまたはPOSTのボディ・パラメータの値を無視するようOracleAS Web Cacheを構成できます。これにより、同じページをリクエストする複数のセッションに対して同じページを表示するようにOracleAS Web Cacheを構成します。OracleAS Web Cacheでは、最初のリクエストに対するレスポンスがキャッシュされ、同じページへの後続のリクエストに対しては、キャッシュからページが渡されます。

関連項目

概要と使用例は、「埋込みURLパラメータまたはPOSTのボディ・パラメータの値の除外」を参照してください。 

無視するパラメータを指定するには、次の3つの構成オプションを使用できます。

セッションまたはパーソナライズ属性のキャッシュ・ポリシーの構成

OracleAS Web Cacheで、セッションCookie、パーソナライズ属性Cookie、埋込みURLパラメータ、またはPOSTパラメータが存在するリクエストや存在しないリクエストを表示する方法を指定できます。

関連項目

 

Application Server ControlコンソールでセッションCookieまたはパーソナライズ属性をサポートするページにキャッシュ・ポリシーを作成するには、Web Cacheホーム・ページ→「管理」タブ→「プロパティ」→「アプリケーション」→「ルール」にナビゲートします。

関連項目

詳細は、Enterprise Managerオンライン・ヘルプの「セッションまたはパーソナライズ属性のキャッシュ・ポリシーの構成」を参照してください。 

OracleAS Web Cache ManagerでセッションCookieまたはパーソナライズ属性をサポートするページのキャッシュ・ポリシーを作成する手順は、次のとおりです。

  1. ナビゲータ・フレームで、「Rule Association」→「Session Caching Policy Association」を選択します。

    「Session Caching Policy Association」ページが表示されます。

  2. 「Session Caching Policy Association」ページで、「Add」をクリックします。

    「Add Session Caching Policy」ダイアログ・ボックスが表示されます。

  3. Please select a session」リストでセッションまたはパーソナライズ属性を選択し、ステップ5に進みます。

    セッションまたはパーソナライズ属性のリスト内に必要な定義が存在しない場合は、「Cancel」をクリックして、「Add Session Caching Policy」ダイアログ・ボックスを終了します。ステップ5に進みます。

  4. セッションまたはパーソナライズ属性の定義を作成します。

    1. ナビゲータ・フレームで、「Rules for Caching, Personalization, and Compression」→「Session Definitions」を選択します。

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

    2. For Site」リストから、サイト別の定義を作成するWebサイトを選択します。

    3. Add」または「Create」をクリックします。

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

    4. This Site Only」または「For All Sites」を選択します。

    5. Session Name」フィールドに、セッションまたはパーソナライズ属性の覚えやすい一意の名前を入力します。

    6. Extract Value From」フィールドで、Cookie名を「Cookie Name」フィールドに入力するか、埋込みURLパラメータまたはPOSTパラメータを「URL or POST body parameter」フィールドに入力します。

      Cookie名およびパラメータの両方を入力した場合は、どちらも同じセッションまたはパーソナライズ属性のサポートに使用する必要があります。異なるセッションまたはパーソナライズ属性をサポートする場合は、別々に定義を作成します。各ページにつき、最高20の定義を指定できます。


      注意

      Cookieが期限切れになると、クライアントのブラウザによりCookieが削除され、オブジェクトに対するその後のリクエストはオリジナル・サーバーに転送されます。ページがクライアントのブラウザのセッション期限後に表示されないようにするために、Webアプリケーション・サーバーによってクライアントのブラウザ・セッションが期限切れになる前に、セッションCookieが期限切れになるようにしてください。 


    7. Default Value (Optional)」フィールドに、セッション・エンコードされたURLまたはパーソナライズ属性に使用できるデフォルトの文字列を入力します。

    8. オプションで、「Comment」フィールドに説明を入力します。

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

    10. ステップ2から4までを繰り返します。

  5. 「Add Session Caching Policy」ダイアログ・ボックスのプロンプトで、「YES」または「NO」を選択します。


    注意

    埋込みURLまたはPOSTボディ・パラメータでは、OracleAS Web Cacheはリクエストに含まれる埋込みURLパラメータを無視します。つまり、リクエストに含まれるパラメータが、レスポンスに含まれるパラメータに一致しない場合も、OracleAS Web Cacheによってレスポンスがキャッシュされます。クライアントのリクエストでパラメータを強制的に残すには、最初のプロンプトで「YES」、2番目のプロンプトで「NO」と答えます。 


    1. 1. Cache objects whose requests contain this session?」プロンプトで、「YES」または「NO」を選択します。

      • Cookieまたはパラメータを使用するオブジェクトのバージョンをキャッシュする場合は、「YES」を選択します。

      • Cookieまたはパラメータを使用するオブジェクトのバージョンをキャッシュしない場合は、「NO」を選択します。

    2. 2. Cache objects whose requests do NOT contain this session?」プロンプトで、「YES」または「NO」を選択します。

      • Cookieまたはパラメータを使用しないオブジェクトのバージョンをキャッシュする場合は、「YES」を選択します。この選択により、セッション情報またはパーソナライズ属性情報を持たないクライアントのリクエストの場合、OracleAS Web Cacheはキャッシュからオブジェクトを返します。

      • Cookieまたはパラメータを使用しないオブジェクトのバージョンをキャッシュしない場合は、「NO」を選択します。

    3. ステップ5aおよび5bのプロンプトで「YES」を選択した場合は、「3. Can the default session value be used for substitution when the request does not contain this session?」プロンプトで、「YES」または「NO」を選択します。

      • オブジェクトの1つのバージョンのみキャッシュする場合、「YES」を選択します。

      • オブジェクトの2つの異なるバージョンをキャッシュする場合は、「NO」を選択します。OracleAS Web Cacheによって、Cookieまたはパラメータをサポートしているリクエストに対して1つのバージョンが返され、Cookieまたはパラメータがサポートされていないリクエストに対してもう1つのバージョンが返されます。

  6. 「Add Session Caching Policy」ダイアログ・ボックスで、「Submit」をクリックします。

  7. ルールをURLに関連付けます。

    1. 「Session Caching Policy Association」ページで、新規作成したルールを選択し、「Change Rule Association」をクリックします。

      「Change Session Caching Association」ダイアログ・ボックスが表示されます。

    2. 右側のリストでセレクタを選択し、「Make Association」をクリックします。

      セレクタが左のリストに移動し、ダイアログ・ボックスが閉じます。

      必要なセレクタが存在しない場合は、「キャッシュ・ルールの構成とルールの関連付け」の説明に従って、セッションCookie、パーソナライズ属性Cookieまたは埋込みURLパラメータをサポートするページのキャッシュ・ルールを作成します。ステップ13で、「Edit/Add Caching, Personalization, and Compression Rule」ダイアログ・ボックスの「Session Caching Policies」行から、ポリシーを選択します。

  8. 各ポリシーに対して、ステップ2から7を繰り返します。

  9. 次のようにして、変更を適用し、OracleAS Web Cacheを再起動します。

    1. OracleAS Web Cache Managerのメイン・ウィンドウで、「Apply Changes」をクリックします。

    2. 「Cache Operations」ページで、キャッシュを選択し、「Restart」をクリックしてOracleAS Web Cacheを再起動します。

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

セッション・エンコードされたURLを使用するパーソナライズ・ページのキャッシュ・ルールを指定できます。セッション・エンコードされたURLによって、HTMLの<A HREF=...>タグに含まれたセッション情報を使用して、Webサイトでユーザー・セッションがトラッキング可能になります。HTMLハイパーリンク・タグのセッションを、セッションCookie、埋込みURLパラメータまたはPOSTのボディ・パラメータから取得したセッション値で置換するように、OracleAS Web Cacheを構成できます。

関連項目

概要と使用例は、「セッション・エンコードされたURLのセッション情報の置換」を参照してください。 

Application Server Controlコンソールでセッション・エンコードされたURL内のセッション情報を置き換える指示をキャッシュするには、Web Cacheホーム・ページ→「管理」タブ→「プロパティ」→「アプリケーション」→「セッション」にナビゲートします。

関連項目

詳細は、Enterprise Managerオンライン・ヘルプの「セッション・エンコードされたURLに対するサポートの構成」を参照してください。 

OracleAS Web Cache Managerでセッション・エンコードされたURL内のセッション情報を置き換える指示をキャッシュするには、次の手順を実行します。

  1. 必要に応じて、セッション・エンコードされたURLを含むページのセッション定義を作成します。

    1. ナビゲータ・フレームで、「Rules for Caching, Personalization, and Compression」→「Session Definitions」を選択します。

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

    2. For Site」リストから、サイト別のセッション定義を作成するWebサイトを選択します。

    3. Add」または「Create」をクリックします。

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

    4. This Site Only」または「For All Sites」を選択します。

    5. Session Name」フィールドに、覚えやすい一意のセッション名を入力します。URLパラメータを無視するために使用したセッション情報と同じものを使用できます。

    6. Extract Value From」フィールドで、Cookie名を「Cookie Name」フィールドに入力するか、埋込みURLまたはPOSTパラメータを「URL or POST body parameter」フィールドに入力します。

      Cookie名およびパラメータの両方を入力した場合は、どちらも同じセッションの置換要素をサポートしている必要があります。異なる置換要素をサポートする場合は、別々にセッション定義を作成します。各ページにつき、最高20の定義を指定できます。


      注意

      Cookieのサイズが3KB以下であることを確認してください。 


    7. Default Value (Optional)」フィールドに、埋込みURLパラメータの値に使用されるデフォルトの文字列を入力します。

      OracleAS Web Cacheでは、埋込みURLパラメータの値が含まれないリクエストに対して、このデフォルトの文字列が使用されます。このようなリクエストの場合、OracleAS 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に設定すると、OracleAS Web Cacheによって値がdefaultに置換されます。

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

      かわりにリクエストがCookieまたはパラメータ設定をオリジナル・サーバーから取得する必要がある場合は、ステップ3を実行します。

    8. Comment」フィールドに、説明を入力します。

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

  2. 「キャッシュ・ルールの構成とルールの関連付け」の説明に従って、このセッションを使用するオブジェクトに対してキャッシュ・ルールを作成します。

    ステップ13で、「Edit/Add Caching, Personalization, and Compression Rule」ダイアログ・ボックスの「Session-Encoded URL」フィールドで「Yes」を選択し、セッション・エンコードされたURLのセッション情報を置き換えます。

  3. リクエストがCookie、埋込みURLパラメータまたはPOSTボディ・パラメータの値をオリジナル・サーバーから取得する必要がある場合は、次の追加手順を実行します。

    1. 「セッションまたはパーソナライズ属性のキャッシュ・ポリシーの構成」の説明に従って、ページに対してセッションをトラッキングするセッション・キャッシュ・ポリシーを作成します。

    2. ステップ5aで、「YES」を選択します。

    3. ステップ5bで、「NO」を選択します。

  4. 次のようにして、変更を適用し、OracleAS Web Cacheを再起動します。

    1. OracleAS Web Cache Managerのメイン・ウィンドウで、「Apply Changes」をクリックします。

    2. 「Cache Operations」ページで、キャッシュを選択し、「Restart」をクリックしてOracleAS Web Cacheを再起動します。

パーソナライズ属性に対するサポートの構成

パーソナライズ属性を使用するパーソナライズ・ページのキャッシュ・ルールを指定できます。パーソナライズ属性は、「Hello, Name」などのパーソナライズされた挨拶の形式でよく使用されます。パーソナライズ属性は、アイコン、アドレス、またはショッピング・カートの一部などの形式でも使用されます。OracleAS Web Cacheでは、<!-- WEBCACHETAG-->タグおよび<!-- WEBCACHEEND-->タグで囲まれたパーソナライズ属性を、Cookie、埋込みURLパラメータまたはPOSTパラメータから取得した値に置き換えるように構成できます。

関連項目

概要と使用例は、「パーソナライズ属性」を参照してください。 

Application Server Controlコンソールでセッション・エンコードされたURL内のセッション情報を置き換える指示をキャッシュするには、Web Cacheホーム・ページ→「管理」タブ→「プロパティ」→「アプリケーション」→「セッション」にナビゲートします。

関連項目

詳細は、Enterprise Managerオンライン・ヘルプの「パーソナライズ属性に対するサポートの構成」を参照してください。 

OracleAS Web Cache Managerでパーソナライズ・ページのルールを作成するには、次の手順を実行します。

  1. 必要に応じて、パーソナライズ属性を含むページの属性定義を作成します。

    1. ナビゲータ・フレームで、「Rules for Caching, Personalization, and Compression」→「Session Definitions」を選択します。

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

    2. For Site」リストから、サイト別のパーソナライズ属性定義を作成するWebサイトを選択します。

    3. Add」または「Create」をクリックします。

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

    4. This Site Only」または「For All Sites」を選択します。

    5. Session Name」フィールドに、覚えやすい一意の属性名を入力します。

      たとえば、名前を使用した挨拶文のパーソナライズ属性の場合は、first_name01と入力します。

    6. Extract Value From」フィールドで、Cookie名を「Cookie Name」フィールドに入力するか、埋込みURLまたはPOSTパラメータを「URL or POST body parameter」フィールドに入力します。

      Cookie名およびパラメータの両方を入力した場合は、どちらも同じパーソナライズ属性の置換要素をサポートしている必要があります。異なる置換要素をサポートする場合は、別々にパーソナライズ定義を作成します。各ページにつき、最高20の定義を指定できます。


      注意

      • Cookieのサイズが3KB以下であることを確認してください。

      • <!-- WEBCACHETAG-->および<!-- WEBCACHEEND-->タグ間で、セッション値を置換することもできます。セッション値を置き換えるには、「Cookie Name」フィールドにセッションCookieを入力するか、または「URL or POST body parameter」フィールドにセッション・パラメータを入力します。

       

    7. Default Value (Optional)」フィールドに、Cookie、埋込みURLパラメータまたはPOSTボディ・パラメータの値に使用されるデフォルトの文字列を入力します。

      OracleAS Web Cacheでは、<!-- WEBCACHETAG-->タグおよび<!-- WEBCACHEEND-->タグが含まれるページで、パーソナライズ属性の値が含まれないリクエストに対してこのデフォルトの文字列が使用されます。このようなリクエストの場合、OracleAS Web Cacheではデフォルトの文字列の値が使用されます。文字列のデフォルトはdefaultです。次に例を示します。

      <B><!-- WEBCACHETAG="first_name01"-->default<!-- WEBCACHEEND--></B>
      
      

      かわりにリクエストがCookieまたはパラメータ設定をオリジナル・サーバーから取得する必要がある場合は、ステップ3を実行します。

    8. Comment」フィールドに、説明を入力します。

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

  2. パーソナライズ・ページのキャッシュ・ルールを作成します。

  3. リクエストがCookie、埋込みURLパラメータまたはPOSTボディ・パラメータの値をオリジナル・サーバーから取得する必要がある場合は、次の追加手順を実行します。

    1. 「セッションまたはパーソナライズ属性のキャッシュ・ポリシーの構成」の説明に従って、ページに対してセッションをトラッキングするキャッシュ・ポリシーを作成します。

    2. ステップ5aで、「YES」を選択します。

    3. ステップ5bで、「NO」を選択します。

  4. 次のようにして、変更を適用し、OracleAS Web Cacheを再起動します。

    1. OracleAS Web Cache Managerのメイン・ウィンドウで、「Apply Changes」をクリックします。

    2. 「Cache Operations」ページで、キャッシュを選択し、「Restart」をクリックしてOracleAS Web Cacheを再起動します。

  5. 次のようにして、<!-- WEBCACHETAG-->および<!-- WEBCACHEEND-->タグを使用して、パーソナライズ属性を使用したページを構成します。

    <!-- WEBCACHETAG="personalized_attribute"-->
    personalized attribute HTML segment
    <!-- WEBCACHEEND-->
    
    

    いずれのタグも、<!--の後に必ず空白を入れてください。


    重要

    コンテンツ・アセンブリおよびページの部分的なキャッシュ用のESIタグが含まれているページでは、<!-- WEBCACHETAG-->および<!-- WEBCACHEEND-->タグは使用できません。単純なパーソナライズを必要とし、ESIを使用している場合は、「単純なパーソナライズでのESIの使用」を参照してください。 


    HTML内で<!-- ...-->コメント・タグが使用可能な場所であれば、<!-- WEBCACHETAG-->および<!-- WEBCACHEEND-->タグは任意の位置に使用可能です。たとえば、<!-- WEBCACHETAG-->および<!-- WEBCACHEEND-->タグを他のHTMLタグのペアの間で使用できますが、1つのHTMLタグ内では使用できません。

    次の例で、<!-- WEBCACHETAG="p_name"--><input>タグ内に置かれていますが、これは<!-- WEBCACHETAG-->の無効な使用方法の例です。

    htp.p('<FORM ACTION="test" METHOD="GET">');
    htp.p('<TABLE BORDER="0" >
             <TR>
             <TD><INPUT TYPE="text" NAME="p_name" SIZE="8" VALUE="<!--
                 WEBCACHETAG="p_name"-->'||p_name||'<!-- WEBCACHEEND-->"></td> 
             </TR>
             <TR>
             <TD><input type="submit" value="Search"></TD>
             </TR>
      </TABLE>');
    
    

1つのHTMLタグ内でパーソナライズを行うには、ESIを使用してください。

関連項目

「変数式を使用した単純なパーソナライズの例」 

例: パーソナライズ・ページの構成

図12-3monthly.htmの例で、パーソナライズされたコンテンツのキャッシュ方法について説明します。

図12-3    monthly.htm


画像の説明

Octoberは、他の値に置換可能なパーソナライズ対象コンテンツです。

このページのURLはmonthly.htm?Month=monthで、Monthは埋込みURLパラメータです。

monthly.htmおよびパーソナライズ対象コンテンツをキャッシュするには、次の手順を実行します。

  1. 次の図に示すように、「Edit/Add Session Definition」ダイアログ・ボックスで、TestMonthというパーソナライズ属性を埋込みURLパラメータMonthにマップします。


    画像の説明

  2. 次の図に示すように、「Add Session Caching Policy」ダイアログ・ボックスで、セッションTestMonth(埋込みURLパラメータMonthを使用)を使用するセッション・キャッシュ・ポリシーを作成します。


    画像の説明

    関連項目

    パーソナライズ属性のキャッシュ・ルールの作成方法の詳細は、「セッションまたはパーソナライズ属性のキャッシュ・ポリシーの構成」を参照してください。 

  3. <!-- WEBCACHETAG-->および<!-- WEBCACHEEND--> HTMLタグをmonthly.htmに追加します。

    Current Month is:
    <!-- WEBCACHETAG="TestMonth"-->October<!-- WEBCACHEEND-->
    
    
  4. 「Edit/Add Caching, Personalization, and Compression Rule」ダイアログ・ボックスで、monthly.htmのキャッシュ・ポリシーを作成します。

    1. Session Caching Policies」行で、埋込みURL Monthのキャッシュ・ルールを選択します。

    2. Session-Encoded URL」行で「Yes」を選択し、パーソナライズ属性の置換指示をキャッシュします。次の図はこのダイアログ・ボックスを示しています。


      画像の説明

  5. 構成の変更を適用します。

    1. OracleAS Web Cache Managerのメイン・ウィンドウで、「Apply Changes」をクリックします。

    2. 「Cache Operations」ページで、OracleAS Web Cacheを再起動します。

OracleAS Web Cacheによってmonthly.htmがキャッシュされていることを検証するには、次の手順を実行します。

  1. 最初のmonthly.htmへのリクエストは、monthly.htm?Month=OctoberというURLに送信します。最初のリクエストはOracleAS Web CacheによってWebアプリケーション・サーバーに転送され、Monthパラメータに対して値Octoberが設定されます。この最初のリクエストにより、monthly.htmがキャッシュに格納されます。

  2. 後続のmonthly.htmのリクエストをmonthly.htm?Month=JanuaryというURLに送信します。

    図12-4に示すように、OracleAS Web Cacheによって、Octoberが値Januaryに置換されます。

    図12-4    キャッシュ時のmonthly.htm


    画像の説明

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

一部のWebサイトでは、ユーザーがページ間を移動する間、セッションを使用する必要があります。セッション要件を維持するには、それらのページ用にセッション/パーソナライズ属性関連キャッシュ・ルールを作成します。これにより、セッションを持たないリクエストは、必ずオリジナル・サーバーによって表示されます。

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

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

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

  3. 「キャッシュ・ルールの構成とルールの関連付け」の説明に従って、実際のエントリ・ページおよび空白のページ用のキャッシュ・ルールを作成します。

    ステップ13で、「Edit/Add Caching, Personalization, and Compression Rule」ダイアログ・ボックスの「Session Caching Policies」行から、値が「Cache with session」および「Cache without session」のセッション・キャッシュ・ポリシーを選択します。

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

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

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

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

  3. 「キャッシュ・ルールの構成とルールの関連付け」の説明に従って、JavaScriptおよびセッション・ページのキャッシュ・ルールを作成します。


    注意

    JavaScriptによるソリューションを使用すると、セッションを必要とするページについて、セッション/パーソナライズ属性関連キャッシュ・ルールを作成する必要はありません。 


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

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

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

関連項目

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

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

Surrogate-Controlレスポンス・ヘッダー・フィールドによって、アプリケーション開発者は、オブジェクトのキャッシュ属性を指定できます。このレスポンス・ヘッダー・フィールドを使用すると、管理インタフェースのOracle Enterprise Manager 10g Application Server ControlコンソールまたはOracleAS 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...)][coookie(cookie_name cookie_name...)]
[compress=yes|no]

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

表12-7    Surrogate-Controlの制御ディレクティブ 
制御ディレクティブ  説明 

content 

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

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

  • "ORAESI/9.0.2": コンテンツ・アセンブリおよびページの部分的なキャッシュに使用するOracle独自の拡張ESIタグを処理します。"ORAESI/9.0.2"では、リリース2(9.0.2および9.0.3)のOracleAS 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タグの詳細は、表16-2を参照してください。 

no-store 

OracleAS Web Cacheがオブジェクトをキャッシュしないよう指定します。 

vary 

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

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

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

使用方法:

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

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

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

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

 

compress 

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

この制御ディレクティブでは、ブラウザ・タイプを指定することはできません。yesを指定したときに、ブラウザ・タイプを制限する必要がある場合は、OracleAS Web Cache Managerで圧縮キャッシュ・ルールを指定します。「作業1: キャッシュ・ルールの作成」のステップ11を参照してください。

注意: 圧縮が有効化されていても、次のものはOracleAS Web Cacheによって圧縮されません。

  • GIF、JPEG、PDF、PNG、SWFおよびZIPファイル。

  • 通常、圧縮を示すために使用されるContent-Encodingレスポンス・ヘッダー・フィールドが含まれるレスポンス。

  • 通常、添付に使用されるContent-Dispositionレスポンス・ヘッダー・フィールドが含まれるレスポンス。

    Content-Dispositionレスポンス・ヘッダー・フィールドを持つレスポンスが圧縮されている場合は、間違ったファイル名が表示されます。)

  • JavaScriptファイル(一部のブラウザ)。

    圧縮されたJavaScriptファイルによって一部のブラウザが不安定になり、障害が発生することもあります。この問題は、scriptタグのsrc属性を使用して参照されているファイルにのみ影響を及ぼし、インラインでJavaScriptを含んでいるファイルは影響を受けません。

    OracleAS Web Cacheでは、Netscape 4.xおよびInternet Explorer 5.5ブラウザの場合、JavaScriptファイルは圧縮されません。その他のブラウザでは、圧縮が有効な場合、ファイルが圧縮されます。

  • カスケード・スタイル・シート(.css)(一部のブラウザ)。

    OracleAS Web Cacheでは、Netscape 4.xおよびInternet Explorer 5.5ブラウザの場合、カスケード・スタイル・シートは圧縮されません。これらのブラウザでは、カスケード・スタイル・シートが圧縮されている場合、背景イメージなどの背景属性が出力に表示されないことがあります。

 

max-age 

OracleAS Web Cacheがオブジェクトをキャッシュするよう指定します。

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

max-age=expiration_time[+removal_time]

使用方法:

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

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

 
使用方法
使用例

次の例では、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リクエスト・ヘッダーが含まれているかどうかに関係なく、複数バージョンのオブジェクトのバージョンをキャッシュすることを指定します。

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);cookies(news/f 
sports/f)

コンテンツ・アセンブリおよびページの部分的なキャッシュ用のルールの構成

関連項目

ページの部分的なキャッシュの概要は、「ページの部分的なキャッシュのためのEdge Side Includes(ESI)」を参照してください。 

この項では、フラグメントによるWebページの動的組立て、およびキャッシュ可能またはキャッシュ不可のページ・フラグメント用ルールの作成方法について説明します。次の項目が含まれます。

ページの部分的なキャッシュの使用

ページの部分的なキャッシュを使用するには、次の手順を実行します。

  1. 次の手順に従って、テンプレート・ページを構成します。

    1. フラグメントを取得して挿入するには、テンプレート内でESIマークアップ・タグを使用します。

    2. テンプレート・ページで、HTTPレスポンスにSurrogate-Controlレスポンス・ヘッダー・フィールドを設定します。次に例を示します。

      Surrogate-Control: max-age=30+60, content="ORAESI/9.0.4"
      
      
    3. テンプレート・ページに必要なすべてのキャッシュ属性がSurrogate-Controlレスポンス・ヘッダー・フィールドに含まれていない場合は、そのページのキャッシュ・ルールを作成します。

  2. フェッチ可能フラグメントを設定します。

単純なパーソナライズでのESIの使用

変数式を使用して、パーソナライズ属性およびセッション・エンコードされたURLと同様の置換を行うことが可能です。ESIの他の機能を使用している場合には単純なパーソナライズにESIを使用し、それ以外の場合は「セッションの確立を含むポピュラーなページに対するルールの構成」で説明されている方法をそのまま使用することをお薦めします。

たとえば、次のHTMLの抜粋では、<!-- WEBCACHETAG-->および<!-- WEBCACHEEND-->タグを使用して、クライアントのブラウザからUserNameというCookieとともに渡される値に基づいて、ユーザー名を置換します。さらに、sessionIDというCookieに含まれているセッション情報を使用して、セッション情報がユーザーごとに置換されます。

Welcome <!-- WEBCACHETAG="UserName"-->John<!-- WEBCACHEEND -->!
Here is a <A HREF="/jsp/myPage.jsp?sessionID=13001">link</A>.

次のESIマークアップにより、同じ結果が得られます。

<esi:vars>
 Welcome $(HTTP_COOKIE{'username'})!
 Here is a <A HREF="/jsp/myPage.jsp?sessionID=$(QUERY_STRING{'sessionid'})">link</A>.
</esi:vars>

<esi:vars>タグを使用すると、ESIタグの外部でESI環境変数を使用できます。変数は、他のESIタグでも使用可能です。

関連項目

 

ESIの使用例

この項では、ESIの使用例を示します。次の項目が含まれます。

ポータル・サイトの実装の例

図12-5に、Markという登録ユーザー名のポータル・サイト・レスポンス・ページhttp://www.company.com/servlet/oportal?username=Markを示します。

図12-5    ポータル・サイト・ページ


画像の説明

このページは、OracleAS Web Cacheによってアセンブリされます。パーソナライズされた挨拶文、気象情報、株式情報、販促広告、ニュースおよびスポーツなどのフラグメントに関してESIマークアップ・タグによって構成されたテンプレート・ページは、Markの環境設定に基づいてアセンブリされます。たとえば、Markがサンフランシスコの気象情報を選択すると、アプリケーションはサンフランシスコの気象情報を検索し、その結果を最終的なHTMLページに出力します。これは動的コンテンツなので、このページはキャッシュできません。一方、ESIマークアップ・タグを使用している場合、OracleAS Web Cacheで大部分のコンテンツの組立てキャッシュが行われます。

次の項では、<esi:inline>および<esi:include>タグを使用してテンプレート・ページやそのフラグメントを実装する方法を説明します。

inlineタグを使用したポータルの例

この項では、<esi:inline>タグの断片化やアセンブリによる、リアルタイム・エレメントが含まれないページの動的コンテンツ・キャッシュの有効性について説明します。フェッチ不可フラグメントをサポートする既存アプリケーションに<esi:inline>タグを適用する方法を示します。<esi:inline>タグによりキャッシュ・コンテンツの容量が減少し、動的コンテンツを独立させることでキャッシュ・ヒット率が向上します。


注意

アプリケーションでそれぞれ別々にフェッチ可能なフラグメントをサポートしている場合、<esi:inline>タグをフェッチ可能なフラグメントに使用するには、fetchable属性をyesに設定します。fetchable属性の詳細は、「ESIのinlineタグ」を参照してください。 


<esi:inline>タグを使用するには、portal.esi内の論理フラグメントを<esi:inline>タグでマークします。パーソナライズされた挨拶文、「Weather Forecast」、「My Stocks」、「Promotion campaign」、「Latest News」および「Latest Sports News」には個々のキャッシュ・プロパティがあるので、これらはフラグメントになり共有可能です。「My Stock」フラグメントは、さらに個別の株価に対応する5つのサブフラグメントに細分されます。また、フラグメントの共有を促すため、パーソナライズされた2つのフラグメントに共通するHTMLコード・セクションをESIフラグメントとして囲み、一定の名前を与えます。このようにすれば、様々なテンプレートに含まれる共通データができるだけ少なくてすみます。

例12-1に、<esi:inline>タグ付きのportal.esiを示します。

例12-1    inlineタグ付きのportal.esi

<esi:inline name="/Common_Fragment_1" >
<!-- First common fragment -->
<HTML>
...
<!-- Personalized Greeting With ESI variable -->
  Welcome, $(QUERY_STRING{username})!
</esi:inline>

<esi:inline name="/Weathers_San_Francisco" >
...
<!-- Personalized Weather Forecast -->
Weather Forecast for San Francisco
<TABLE>
  <TR>
    <TD>
      Currently: 50F
    </TD>
  </TR>
</TABLE>
</esi:inline>

<esi:inline name="/Common_Fragment_2" >
<!-- Second common fragment -->
...
</esi:inline>

<esi:inline name="/Stocks_$(QUERY_STRING{username})" >
<!-- Personalized Stock Quote Selections -->
<TABLE>
  <TR>
    <TD>
    <esi:inline name="/ticker_IBM">
      IBM 84.99
    </esi:inline>
    <BR>
    <esi:inline name="/ticker_ORCL">
      ORCL 13.379
    </esi:inline>
    <BR>
    <esi:inline name="/ticker_YHOO">
      YHOO 27.15
    </esi:inline>
    <TD>
  </TR>
</TABLE>
</esi:inline>

<esi:inline name="/Common_Fragment_3">
<!-- Third common fragment -->
...
</esi:inline>

<esi:inline name="/ExternalAdvertisement">
<!-- External Advertisement -->
<TABLE>
  <TR>
    <TD>
    <a href="http://www.companyad.com/advert?promotionID=126532">
    <img src="http://www.companyad.com/advert_img?promotionID=126532">
    </a>
    </TD>
  </TR>
</TABLE>
</esi:inline>

<esi:inline name="/Common_Fragment_4">
<!-- Fourth common fragment -->
...
</esi:inline>

<esi:inline name="/Top_News_Finance">
<!-- Personalized Top News -->
Latest News for finance
<TABLE>
  <TR>
     Tech Spending Growth Indexes Little Changes
     Home Sales Hit Record High
     Gas Prices Dip Again
  </TR>
</TABLE>
</esi:inline>

<esi:inline name="/Sports_News_Soccer" >
<!-- Personalized Sports News -->
Latest Sports News for Soccer

<TABLE>
  <TR>
  Preparation for World Cup
  Youth Cup game on a Sunday
  Latest Scores
  </TR>
</TABLE>
</esi:inline>

<esi:inline name="/Common_Fragment_5" >
...
</esi:inline>

例12-2に、パーソナライズされた挨拶文のマークアップを示します。フラグメントは、異なるユーザーに属するパーソナライズ・ページすべてに共通しています。<esi:inline>タグによりこのフラグメントには一定の名前が割り当てられるので、異なるユーザー(例: John)が同じフラグメント名の同じフラグメントをテンプレートとして持っていることもあります。2つのフラグメントは、名前が同一の場合に限り共有されます。すべてのテンプレートに含まれる同一の共有フラグメントが期限切れまたは無効な場合に、必要な更新は1回のみです。$(QUERY_STRING{username})は、値usernameの値へのアクセスを提供するESI環境変数です。アプリケーションはusername問合せ文字列パラメータを使用してユーザー名を渡すので、この変数はここで使用されます。この変数を使用することにより、最初のフラグメントが全ユーザーに共有されます。

例12-2    inlineタグ付きのportal.esiの例: パーソナライズされた挨拶文

<esi:inline name="/Common_Fragment_1" >
<!-- First common fragment -->
<HTML>
...
<!-- Personalized Greeting With ESI variable -->
  Welcome, $(QUERY_STRING{username})!
</esi:inline>

例12-3に、「Weather Forecast」のマークアップを示します。フラグメントは各都市に固有です。同じ都市を選択する各テンプレートは、フラグメントのネーミング上、このフラグメントをMarkのページと共有することになります。

例12-3    inlineタグ付きのportal.esiの例: Weather Forecast

<esi:inline name="/Weathers_San_Francisco" >
<!-- Personalized Weather Forecast -->
Weather Forecast for San Francisco
<TABLE>
  <TR>
    <TD>
      Currently: 50F
    </TD>
  </TR>
</TABLE>
</esi:inline>

例12-4に、「My Stocks」のマークアップを示します。株価フラグメントは、Markのページにあるすべての指定銘柄を囲みます。このフラグメントは、ネストされた<esi:inline>タグを使用して、さらに個別の指定銘柄に対応する5つのサブフラグメントに細分されます。したがって、MarkのESIテンプレートはMarkの選択株フラグメントを参照し、さらに指定銘柄のフラグメントを参照します。指定銘柄は多数のユーザーの選択株フラグメントによって共有されますが、選択株フラグメント自体はMarkの固有のテンプレートでもあります。このマークアップよって固有の情報が共有情報から分離され、キャッシュの更新と個人の選択株に割り当てられる領域を大幅に抑制できます。

例12-4    portal.esiの例: 「My Stocks」フラグメント

<esi:inline name="/Stocks_$(QUERY_STRING{username})" >
<!-- Personalized Stock Quote Selections -->
<TABLE>
  <TR>
    <TD>
    <esi:inline name="/ticker_IBM">
      IBM 84.99
    </esi:inline>
    <BR>
    <esi:inline name="/ticker_ORCL">
      ORCL 13.379
    </esi:inline>
    <BR>
    <esi:inline name="/ticker_YHOO">
      YHOO 27.15
    </esi:inline>
    <TD>
  </TR>
</TABLE>
</esi:inline>

例12-5に、「Promotion」セクションの広告を参照するマークアップを示します。promotionIDは、ユーザー識別情報に基づくIDです。

例12-5    inlineタグ付きのportal.esiの例: Promotion

<esi:inline name="/ExternalAdvertisement">
<!-- External Advertisement -->
<TABLE>
  <TR>
    <TD>
    <a href="http://www.companyad.com/advert?promotionID=126532">
    <img src="http://www.companyad.com/advert_img?promotionID=126532">
    </a>
    </TD>
  </TR>
</TABLE>
</esi:inline>

レスポンスのたびに変化する入替式広告は、フェッチ不可ESI <esi:inline>キャッシュを利用する価値がないリアルタイム・コンテンツの一例です。フェッチ不可ESIのinlineフラグメントとしてわずかな部分でもリアルタイム・コンテンツが埋め込まれている場合、常にレスポンス全体を再生成してフェッチする必要があります。このようなリアルタイム・フラグメントにESIおよび動的コンテンツのキャッシュを使用するには、<esi:include>タグを使用します。

関連項目

リアルタイム広告に<esi:include>タグを使用する例は、「includeタグを使用したポータルの例」を参照してください。 

「Latest News」および「Latest Sports News」のフラグメントは、気象情報のフラグメントと同様です。共通する領域もすべてフラグメントとして定義されます。これらをテンプレートの一部として残しておくこともできますが、記憶領域を浪費します。例12-6にマークアップを示します。

例12-6    inlineタグ付きのportal.esiの例: 「Latest News」および「Latest Sports News」

<esi:inline name="/Top_News_Finance">
<!-- Personalized Top News -->
Latest News for finance
<TABLE>
  <TR>
     Tech Spending Growth Indexes Little Changes
     Home Sales Hit Record High
     Gas Prices Dip Again
  </TR>
</TABLE>
</esi:inline>


<esi:inline name="/Sports_News_Soccer" >
<!-- Personalized Sports News -->
Latest Sports News for Soccer
<TABLE>
  <TR>
  Preparation for World Cup
  Youth Cup game on a Sunday
  Latest Scores
  </TR>
</TABLE>
</esi:inline>
includeタグを使用したポータルの例

この項では、<esi:include>タグを使用して、テンプレートにコンテンツが埋め込まれていないフェッチ可能フラグメントを断片化やアセンブルする方法について示します。

例12-7に、<esi:include>タグ付きのportal.esiを示します。

例12-7    includeタグ付きのportal.esi

<HTML>
...
<!-- Personal Profile -->
<esi:comment text="Profile refers to environment variables stored in
/servlet/GetProfile. GetProfile servlet enables access to a set of environment
variables with personal profile information."/>
<esi:environment src="/servlet/GetProfile?username=$(QUERY_STRING{username})"
name="Profile"/>
...

<!-- Personalized Greeting With ESI variable -->
<esi:vars>Welcome, $(QUERY_STRING{username})!</esi:vars>
...


<!-- Personalized Weather Forecast -->
<TABLE>
  <TR>
    <TD>
      <esi:include 
src="/servlet/Weather?city=$(Profile{city})&state=$(Profile{state})"/>
    </TD>
  </TR>
</TABLE>
...

<!-- Personalized Stock Quote Selections -->
<TABLE>
  <TR>
    <TD>
      <esi:include src="/servlet/PersonalizedStockSelection?username=$(QUERY_
STRING{username})"/>
    </TD>
  </TR>
</TABLE>
...

<!-- External Advertisement -->
<TABLE>
  <TR>
    <TD>
      <esi:try>
        <esi:attempt>
          <esi:comment text="Include an ad"/>
          <esi:include src="/servlet/Advert"/>
        </esi:attempt>
        <esi:except>
         <esi:comment text="Just write an HTML link instead"/>
         <A HREF="http://www.oracle.com">http://www.oracle.com</a>
        </esi:except>
      </esi:try>
    </TD>
  </TR>
</TABLE>
...

<!-- Personalized Top News -->
Latest News for <esi:vars>$(Profile{news})</esi:vars>
<TABLE>
  <TR>
    <TD>
      <esi:choose>
        <esi:when test="$(Profile{news}) == 'Internet'">
          <esi:include src="/servlet/News?type=Top&topic=internet"/>
        </esi:when>
        <esi:when test="$(Profile{news}) == 'finance'">
         <esi:include src="/servlet/News?type=Top&topic=business"/>
        </esi:when>
      <esi:otherwise>
      <esi:include src="/servlet/News?type=Top&topic=technology"/>
      </esi:otherwise>
      </esi:choose>
    </TD>
  </TR>
</TABLE>
...


<!-- Personalized Sports News -->
Latest Sports News for <esi:vars>$(Profile{sport})</esi:vars>
<TABLE>
  <TR>
    <TD>
      <esi:choose>
        <esi:when test="$(Profile{sport}) == 'golf'">
          <esi:include src="/servlet/News?type=Sports&topic=golf"/>
        </esi:when>
        <esi:when test="$(Profile{sport}) == 'soccer'">
          <esi:include src="/servlet/News?type=Sports&topic=soccer"/>
        </esi:when>
        <esi:when test="$(Profile{sport}) == 'basketball'">
          <esi:include src="/servlet/News?type=Sports&topic=basketball"/>
        </esi:when>
        <esi:when test="$(Profile{sport}) == 'baseball'">
          <esi:include src="/servlet/News?type=Sports&topic=baseball"/>
        </esi:when>
        <esi:otherwise>
          <esi:include src="/servlet/News?type=Sports&topic=soccer"/>
        </esi:otherwise>
      </esi:choose>
    </TD>
  </TR>
</TABLE>

例12-8では、GetProfileに格納されている環境変数を参照するようにProfileを指定しています。GetProfileにより、ユーザー・プロファイル変数へのアクセスが可能になります。これは挿入されているフラグメントのパラメータとして使用されます。

例12-8    portal.esiの例: カスタム・プロファイル環境変数の設定

<!-- Personal Profile -->
<esi:comment text="Profile refers to environment variables stored in
/servlet/GetProfile. GetProfile servlet enables access to a set of environment
variables with personal profile information."/>

<esi:environment src="/servlet/GetProfile?username=$(QUERY_STRING{username})"
name="Profile"/>

例12-9に、citystatenewsおよびsports環境変数へのアクセスを可能にするGetProfileを示します。

例12-9    portal.esiの例: 環境変数付きのGetProfileファイル

<?xml version="1.0"?>
<esi-environment esiversion="ORAESI/9.0.4">
  <city>San_Francisco</city>
  <state>CA</state>
  <news>finance</news>
  <sports>soccer</sports>
</esi-environment>

例12-10に、パーソナライズされた挨拶文Welcome, Mark!のマークアップを示します。パーソナライズされた挨拶文は、<esi:vars>タグによって表示されます。このタグの挨拶文は、URLに埋め込まれたusernameパラメータに基づいています。パラメータusernameは、登録ユーザー名です。このマークアップにより、パーソナライズされた挨拶文が、キャッシュ可能なテンプレート・ページに含まれます。

例12-10    varsタグ付きのportal.esiの例: パーソナライズされた挨拶文

<esi:vars>Welcome, $(QUERY_STRING{username})!</esi:vars>

例12-11に、「Weather Forecast」のマークアップを示します。「Weather Forecast」にはサーブレット・フラグメント名Weatherが含まれています。これはGetProfile内でユーザーのcityおよびstate環境変数値を使用し、ユーザーに適した天気予報を表示します。GetProfilecity環境変数値はSan Franciscostate環境変数値がCaliforniaなので、カリフォルニア州サンフランシスコの天気予報が表示されます。

例12-11    includeタグ付きのportal.esiの例: Weather Forecast

<TABLE>
  <TR>
    <TD>
      <esi:include 
src="/servlet/Weather?city=$(Profile{city})&state=$(Profile{state})"/>
    </TD>
  </TR>
</TABLE>

「My Stocks」のマークアップを例12-12に示します。「My Stocks」には、PersonalizedStockSelectionというサーブレット・フラグメントが含まれています。表示される株式は、URLにエンコードされたuserIDパラメータに基づきます。userIDは、登録ユーザーの一意のIDです。

例12-12    includeタグ付きのportal.esiの例: 「My Stocks」フラグメント

<TABLE>
  <TR>
    <TD>
      <esi:include src="/servlet/PersonalizedStockSelection?username=$(QUERY_
STRING{username})"/>
    </TD>
  </TR>
</TABLE>

例12-13に、挿入されているフラグメントPersonalizedStockSelectionのマークアップを示します。3つの株価フラグメントIBM、ORCLおよびYHOOが含まれています。

例12-13    portal.esiの例: MarkのPersonalizedStockSelectionフラグメント

<TABLE>
  <TR>
    <TD>
    <BR>
    <esi:include src="Quote?symbol=IBM"/>
    <BR>
    <esi:include src="Quote?symbol=ORCL"/>
    <BR>
    <esi:include src="Quote?symbol=YHOO"/>
    <BR>
    </TD>
  </TR>
</TABLE>

ユーザーごとに出力が異なるため、PersonalizedStockSelectionフラグメントはキャッシュできません。ただし、内部の株価に対するレスポンスはキャッシュ可能で、複数のユーザー間で株価を共有できます。多数のユーザーが株価を共有していても、株価が更新された場合、1回のブラウザの再ロードのみ必要です。たとえば、例12-14に、Scottという別のユーザーのPersonalizedStockSelectionフラグメントを示します。3つの株価フラグメントIBM、ORCLおよびSCOが含まれています。前述のとおり、IBMとORCLはMarkと共有されています。Markが先にページを再ロードして株価をキャッシュすると、ScottのIBMとORCLの株価も自動的に更新されます。

例12-14    portal.esiの例: ScottのPersonalizedStockSelectionフラグメント

<TABLE>
  <TR>
    <TD>
    <BR>
    <esi:include src="Quote?symbol=IBM"/>
    <BR>
    <esi:include src="Quote?symbol=ORCL"/>
    <BR>
    <esi:include src="Quote?symbol=SCO"/>
    <BR>
    </TD>
  </TR>
</TABLE>

例12-15に、「Promotion」セクションの入替式広告のマークアップを示します。広告は、レスポンスのたびに変化するということで入れ替わるようになっています。OracleAS Web Cacheでは、テンプレート・ページから、そこにインクルードするイメージ・フラグメントのレスポンスの生成を分離することにより、テンプレートをキャッシュしつつ、動的な広告をテンプレートに統合することが可能です。

例12-15    includeタグ付きのportal.esiの例: Promotion

<TABLE>
  <TR>
    <TD>
      <esi:try>
        <esi:attempt>
          <esi:comment text="Include an ad"/>
          <esi:include src="/servlet/Advert"/>
       </esi:attempt>
       <esi:except>
         <esi:comment text="Just write an HTML link instead"/>
          <A HREF="www.oracle.com">www.oracle.com</a>
       </esi:except>
      </esi:try>
    </TD>
  </TR>
</TABLE>

例12-16に示すように、バナーに含まれているイメージ・フラグメントのレスポンスはキャッシュできません。ユーザーがこのページをリクエストすると、OracleAS Web Cacheにより、バナーを生成するようにリクエストがWebアプリケーション・サーバーに送信されます。Webアプリケーション・サーバーから、Advertサーブレットにより、リクエストのバナーが生成されます。

例12-16    portal.esiの例: 入替式バナーの出力

<TABLE>
  <TR>
    <TD>
      <A HREF="http://www.companyad.com/redirect?refID=11934502">
      <IMG src="http://www.companyad.com/advert_img?refID=11934502"></A>
    </TD>
  </TR>
</TABLE>

例12-17に示すように、次にユーザーがページを再ロードすると、Advertサーブレットによってそのリクエスト用に別のバナーが生成されます。

例12-17    portal.esiの例: 入替式バナー再ロード

<TABLE>
  <TR>
    <TD>
      <A HREF="http://www.companyad.com/redirect?refID=123456602">
      <IMG src="http://www.companyad.com/advert_img?refID=123456602"></A>
    </TD>
  </TR>
</TABLE>

バナーは、<esi:try>タグの代替処理によって表示されます。Advertサーブレットが実行できない場合は、www.oracle.comへのリンクがバナーの位置に表示されます。

例12-18に、「Latest News」および「Latest Sports News」のマークアップを示します。

変数式を使用した単純なパーソナライズの例

「セッションの確立を含むポピュラーなページに対するルールの構成」のステップ5で説明されているように、<!-- WEBCACHETAG-->タグおよび<!-- WEBCACHEEND-->タグは他のHTMLタグのペアの間で使用できますが、HTMLタグ内では使用できません。ただし、ESI変数はHTMLタグ内で使用可能です。

たとえば、例12-19を参照してください。この例のHTMLコードでは、テキスト・ボックスが含まれるHTMLフォームにPL/SQLが使用されています。

例12-19    パーソナライズされていないPL/SQLコード

htp.p('<form action="test" method="GET">');
htp.p('<table border="0" >
      <tr>
      <td><input type="text" name="p_name" size="8" value="'||p_name||'"></td>
      </tr>
      <tr>
      <td><input type="submit" value="Search"></td>
      </tr>
</table>');

例12-20に、<esi:vars>タグとともに$HTTP_COOKIE変数を使用して、p_nameの値をユーザー名に置換する方法を示します。

例12-20    ESIによるパーソナライズを使用したPL/SQLコード

htp.p('<form action="test" method="GET">');
htp.p('<table border="0" >
    <tr><esi:vars> 
         <td><input type="text" name="p_name" size="8"
                          value="$(HTTP_COOKIE{'p_name'}"></td>
         </tr></esi:vars> 
         <tr>
         <td><input type="submit" value="Search"></td>
         </tr>
  </table>');



戻る 次へ
Oracle
Copyright © 2002, 2006 Oracle.

All Rights Reserved.
目次
目次
索引
索引