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

前
 
次
 

7 コンテンツの無効化

この章では、無効化リクエストをOracle Web Cacheに送信する方法について説明します。

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

7.1 無効化の概要

第6.7項で説明されているように、有効期限ポリシーを作成し、それをキャッシュ・ルールに関連付けることによって、オリジン・サーバーのコンテンツは更新されます。たとえ有効期限ポリシーがあっても、コンテンツが失効するタイミングを正確に予測するのは困難な場合があります。Oracle Web Cacheでは代替の方法として、このようなコンテンツが失効したと管理者またはアプリケーションが判断したときには、コンテンツを明示的に無効化できるメカニズムを提供しています。

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

Oracle Web Cacheは、次の形式の無効化をサポートしています。

7.2 バンド外無効化について

キャッシュ内のオブジェクトを無効化するには、無効化リスニング・ポートを介してinvalidatorアカウントからHTTP POSTリクエストを送信します。invalidatorアカウントは、無効化リクエストの送信を許可されています。図7-1に示すように、無効化リクエストは次の方法で送信します。

次の項では、使用可能な方法を個別に説明します。

7.3 ESIによるインライン無効化

Edge Side Includes(ESI)の一部として実装されるインライン無効化は、オリジン・サーバーに対して、Oracle Web Cacheに送信されたHTTPレスポンスに無効化メッセージを組み合せる便利な方法を提供します。具体的には、オリジン・サーバーがESIタグを使用してレスポンス・ボディのHTML内にXML無効化ドキュメントを埋め込みます。

たとえば、顧客がE-Commerceサイトでベジタリアン向けの料理本を購入した場合、確認レスポンスにその書籍、著者および野菜に関連するすべてのカタログ・ページを無効にする指示を含めることができます。無効化メッセージをインラインで送信する機能により、バンド外無効化の送信に関連する接続オーバーヘッドが軽減されるため、ESI開発者には便利なツールです。

ESIによる無効化の使用方法の詳細は、第11.3項を参照してください。

7.4 レスポンス・ヘッダーによる無効化について

レスポンス・ヘッダーによる無効化は、オリジン・サーバーがレスポンス・ボディにHTML以外の要素が含まれるトランザクション・レスポンスを返すことを可能にするOracle Web Cacheの機能です。この状況ではESIインライン無効化は使用できません。Oracle Web Cacheでは、レスポンス・ボディにHTMLが含まれている場合にのみESI無効化タグを使用できます。レスポンス・ヘッダーによる無効化では、オリジン・サーバーは専用の無効化レスポンス・ヘッダーで無効化ディレクティブを送信できます。

レスポンス・ヘッダーによる無効化は、返されるレスポンス・ボディのコンテンツに関して柔軟性が高いだけではありません。無効化ヘッダーの作成はきわめて負荷の低い作業であるため、Webアプリケーションでのコーディング作業が軽減されます。

レスポンス・ヘッダーによる無効化はインライン無効化と同様に機能します。つまりオリジン・サーバーは、Oracle Web Cacheに送信されるレスポンスに無効化ディレクティブを組み合せます。ただしレスポンス・ヘッダーによる無効化では、レスポンス・ボディにHTML以外の要素が含まれる場合にも無効化が可能な点が異なります。

オリジン・サーバーは、レスポンスに特別な無効化ヘッダーを追加します。Oracle Web Cacheは無効化ヘッダーを抽出し、対応するコンテンツを無効化して、無効化ヘッダーを含めずにレスポンスをクライアントに転送します。

オリジン・サーバーは、あらゆるレスポンスに無効化レスポンス・ヘッダーを組み合せることができます。たとえば、オリジン・サーバーが無効化ディレクティブの送信を遅らせて、後から最初に無効化が発生したリクエストとは無関係のリクエストへのレスポンスでその無効化ディレクティブを送信することができます。

Oracle Web Cacheは、Webクライアントにレスポンスを返すときに無効化レスポンス・ヘッダーを取り除きます。クラスタ伝播により無効化がクラスタ内の他のメンバーに転送されるため、Oracle Web Cacheは、キャッシュ・クラスタ内の別のメンバーにレスポンスを返す場合にも無効化レスポンス・ヘッダーを取り除きます。

レスポンス・ヘッダーによる無効化を有効にする方法の詳細は、第7.8項を参照してください。

7.5 バンド外メカニズムとESIインライン・メカニズムの無効化リクエストの形式

バンド外メカニズムでは、バンド外のHTTP POST無効化リクエストをExtensible Markup Language(XML)構文で送信します。ESIインライン・メカニズムも、<esi:invalidate>タグ内で同じ構文を使用します。XMLリクエストのボディの内容により、無効にするURLがキャッシュに指定されます。

次の項では、無効化リクエストの構文を説明します。

7.5.1 無効化リクエストの構文

次の構文を使用して、絶対パスおよびファイル名が含まれている絶対URL内のオブジェクトを無効にします。

<?xml version="1.0"?>
<!DOCTYPE INVALIDATION SYSTEM "internal:///WCSinvalidation.dtd">
<INVALIDATION VERSION="WCS-1.1">
   <SYSTEM>
    <SYSTEMINFO NAME="name" VALUE="value"/>
   </SYSTEM>  
   <OBJECT>
     <BASICSELECTOR URI="URL"/>
     <ACTION REMOVALTTL="TTL"/>
     <INFO VALUE="value"/>
   </OBJECT>
</INVALIDATION>

次の構文を使用して、より高度な無効化セレクタに基づいてオブジェクトを無効にします。

<?xml version="1.0"?>
<!DOCTYPE INVALIDATION SYSTEM "internal:///WCSinvalidation.dtd">
<INVALIDATION VERSION="WCS-1.1">
   <SYSTEM>
    <SYSTEMINFO NAME="name" VALUE="value"/>
   </SYSTEM>  
   <OBJECT>
     <ADVANCEDSELECTOR URIPREFIX="prefix"
                       URIEXP="URL_expression"
                       HOST="host_name:port"
                       METHOD="HTTP_request_method"
                       BODYEXP="HTTP_body"/>
       <COOKIE NAME="cookie_name" VALUE="value"/>
       <HEADER NAME="HTTP_request_header" VALUE="value"/>
       <OTHER NAME="URI|BODY|QUERYSTRING_PARAMETER|SEARCHKEY"
             TYPE="SUBSTRING|REGEX"
             VALUE="value"/>
     </ADVANCEDSELECTOR>
     <ACTION REMOVALTTL="TTL"/>
     <INFO VALUE="value"/>
   </OBJECT>
</INVALIDATION>

有効な無効化リクエストのボディの先頭は、次のとおりです。

<?xml version="1.0"?>
<!DOCTYPE INVALIDATION SYSTEM "internal:///WCSinvalidation.dtd">

最初の行ではXMLのリリース1.0が指定されます。2行目では、リクエストがXML文書タイプとしてWCSinvalidation.dtdファイルを使用する無効化リクエストであることを示します。WCSinvalidation.dtdは、無効化リクエストおよびレスポンスの文法を定義するDocument Type Definition(DTD)です。

次のことに注意してください。

  • <?xml」の前に空白を入れないでください。

  • アプリケーションが無効化リクエストをサード・パーティのXMLパーサーと共有している場合、"internal:///WCSinvalidation.dtd"のかわりに次のパスを使用します。

    "http://www.oracle.com/webcache/90400/WCSinvalidation.dtd"
    

ルート要素INVALIDATIONには、表7-1に説明する属性と要素が含まれています。

表7-1 INVALIDATIONの要素および属性

無効化処理用の要素/属性 説明

VERSION属性

INVALIDATION要素の必須属性

XML文書タイプとして使用するWCSinvalidation.dtdファイルのバージョンを示します。

リリース9.0.x以降では、既存のアプリケーションを変更する必要がない場合を除いて、常にVERSION="WCS-1.1"を使用してください。ただし、VERSION="WCS-1.0"を使用した場合、新しい無効化機能は利用できません。

SYSTEM要素

INVALIDATION要素のオプション要素。SYSTEM要素はSYSTEMINFO要素が必要です。

SYSTEMINFO要素

SYSTEM要素の必須要素。

可能なNAME/VALUEペアを次に示します。

  • NAME="WCS_PROPAGATE" VALUE="TRUE|FALSE"

    このペアは、無効化リクエストをキャッシュ・クラスタのメンバーに伝播するかどうかを指定します。WCS_PROPAGATETRUEの場合は、クラスタ構成内の無効化の伝播設定より優先されます。WCS_PROPAGATEFALSEの場合は、クラスタ構成内の無効化の伝播設定が使用されます。

    デフォルトはFALSEです。

  • NAME="WCS_DISCONNECTED_MODE_OK" VALUE="TRUE|FALSE"

    このペアは、無効化が実行される時間を指定します。WCS_DISCONNECTED_MODE_OKTRUEの場合、無効化は即時に実行されません。無効化レスポンスは、無効化リクエストの受信と同時に送信されます。無効化の結果を待機しない場合は、この要素をTRUEに設定します。WCS_DISCONNECTED_MODE_OKFALSEの場合、無効化は即時に完了し、無効化の結果が送信されます。

    デフォルトはFALSEです。

OBJECT要素

無効化リクエストの必須要素。リクエスト内で複数のOBJECT要素を指定できます。

BASICSELECTOR要素

URI属性: BASICSELECTOR要素の必須属性。無効にするオブジェクトのURLを指定します。次の形式を使用します。

  • http://host_name:port/path/filename

  • https://host_name:port/path/filename

administratorアカウントがリクエストを送信する場合は、host_name:portは必須ではありません。

ADVANCEDSELECTOR要素

URIPREFIX属性: ADVANCEDSELECTOR要素の必須属性。無効にするオブジェクトのパス接頭辞を指定します。パス接頭辞は、http|https://host_name:port/path/filenameまたは"/"で始めて、"/"で終わる必要があります。host_name:portは、HOST属性が指定されず、invalidatorアカウントがリクエストを送信している場合に必要です。

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

 


URIEXP属性: ADVANCEDSELECTOR要素のオプション属性。URIPREFIX内に存在する無効にするオブジェクトのURLを指定します。値が入力されなかった場合は、URIPREFIX内のすべてのオブジェクトが無効になります。

正規表現の使用が可能です。これらの文字を文字どおりに使用する場合は、その前にエスケープ文字としてバックスラッシュ(\)を置きます。

正規表現の構文は、http://www.cs.utah.edu/dept/old/texinfo/regex/regex_toc.htmlを参照してください。

注意:

  • クライアントのブラウザからOracle Web Cacheに送信されるリクエストURLと、Oracle Web Cacheで内部的にそのリクエストの処理に使用されるURLは異なります。Oracle Web Cacheでページ・リクエストが処理されるときに、そのURLの埋込みURLパラメータはアルファベット順に並べ替えられます。一方、無効化リクエストは、埋込みURLパラメータが並べ替えられたURLの内部表現に対してのみ一致判定します。無効化リクエストに正しく一致させるには、埋込みURLパラメータをアルファベット順に並べ替えて入力してください。

  • 無効化リクエストが送信されると、Oracle Web CacheはURIEXPに対して正規表現による照合を実行します。この処理には時間がかかる場合があります。かわりに、OTHER要素を使用して、正規表現一致ではなくサブストリング一致を指定することができます。

 


HOST属性: URIPREFIX値にhost_name:portが含まれず、invalidatorアカウントがリクエストを送信する場合、この属性は必須です。サイトのホスト名とポート番号(host_name:port)を指定します。HTTPのデフォルト・ポートはポート80です。

 


METHOD属性: ADVANCEDSELECTOR要素のオプション属性。無効にするオブジェクトのHTTPリクエスト・メソッド(GETまたはPOST)を指定します。デフォルト値はGETです。

 


BODYEXP属性: ADVANCEDSELECTOR要素のオプション属性。METHODPOSTの場合は、無効にするオブジェクトのHTTP POST本体を指定します。

注意: 無効化リクエストが送信されると、Oracle Web CacheはBODYEXPに対して正規表現による照合を実行します。この処理には時間がかかる場合があります。かわりに、OTHER要素を使用して、正規表現一致ではなくサブストリング一致を指定することができます。

COOKIE要素

無効化リクエストのオプションの要素。次の属性を使用します。

  • NAME属性: COOKIE要素属性の必須属性。Cookieに基づいて複数バージョンのオブジェクトを無効にするためのCookie名を指定します。

  • VALUE属性: COOKIE要素のオプション属性。Cookieの値を指定します。値が存在しない場合は、指定されたCookieを持ち、値を持たないオブジェクトのみが無効になります。

複数のバージョンのオブジェクトとセッション・キャッシュ・ポリシーの両方に対して間違って指定されたCookieを指定する場合、無効化はこのCookieの発生に基づきます。過度の無効化を回避するには、複数のバージョンのオブジェクトとセッション・キャッシュ・ポリシーに対して異なるCookieを構成します。

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

  • 複数バージョンのオブジェクトに対するキャッシュ・ルールの作成方法は、第6.8.2項を参照してください。

  • セッション・キャッシュ・ポリシーの指定方法は、第6.8.6項を参照してください。

HEADER要素

無効化リクエストのオプションの要素。次の属性を使用します。

  • NAME属性: HEADER要素の必須属性。HTTPリクエスト・ヘッダーを指定すると、リクエスト・ヘッダーに基づいて複数バージョンのオブジェクトが無効になります。

  • VALUE属性: HEADER要素のオプション属性。ヘッダーの値を指定します。

複数バージョンのオブジェクトに対するキャッシュ・ルールの作成方法は、第6.8.2項を参照してください。

OTHER要素

無効化リクエストのオプションの要素。次の属性を使用します。

  • NAME属性: OTHER要素の必須属性。NAMEは次の値をサポートしています。

    - URIPREFIX内に存在するURLの一致を指定するURI

    - HTTP POST本体の一致を指定するBODY

    - 埋込みURLパラメータの一致を指定するQUERYSTRING_PARAMETER

    - Surrogate-Keyレスポンス・ヘッダーでの検索キーの一致を指定するSEARCHKEY

  • TYPE属性: URIBODYおよびQUERYSTRING_PARAMETERの必須属性。この属性は、SEARCHKEYでは認識されません。TYPEは、次の値をサポートしています。

    - QUERYSTRING_PARAMETERの文字列完全一致、およびURIBODYの文字列部分一致を指定するSUBSTRING

    - 正規表現の一致を指定するREGEX

  • VALUE属性: URIBODYQUERYSTRING_PARAMETERおよびSEARCHKEYの必須属性。URIBODYQUERYSTRING_PARAMETERまたはSEARCHKEYの値を指定します。TYPEとしてREGEXを指定した場合は、Oracle Web Cacheが文字どおりに解釈するように、正規表現の前にエスケープ文字としてバックスラッシュ(\)を置きます。

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

  • 拡張無効化の最適化の詳細は、第7.5.5項を参照してください。

  • 検索キーの構成方法は、第7.9項を参照してください。

ACTION要素

無効化リクエストの必須要素。

REMOVALTTL属性

ACTION要素のオプション属性。オブジェクトが無効化されるまでキャッシュ内に存続する最長期間を指定します。デフォルトは0秒です。

INFO要素

無効化リクエストのオプションの要素。

VALUE属性

INFO要素の必須属性。無効化の結果に含まれるコメントを指定します。無効化リクエストが完了すると、コメントを含むメッセージおよび無効化の結果がイベント・ログに書き込まれます。

[15/Oct/2008:19:26:46 +0000] [notification 11748] [invalidation] [ecid: 21085932167,0] Invalidation with INFO 'INFO_comment' has returned with status 'status'; number of objects invalidated: 'number'.


注意:

次のXML特殊文字は、フィールド内でエスケープする必要があります。アンパサンド(&)→「&amp;」、右山カッコ(>)→「&gt」、左山カッコ(<)→「&lt」、二重引用符(")→「&quot」、一重引用符(')→「&apos;」のように入力します。


注意:

Oracle Web Cacheでは、次のリリース1.0形式で送信された無効化リクエストもサポートしています。
<?xml version="1.0"?>
<!DOCTYPE INVALIDATION SYSTEM "internal:///invalidation.dtd">
<INVALIDATION>
   <URL EXP="URL" PREFIX="YES|NO">
               <VALIDITY LEVEL="validity" REFRESHTIME="seconds"/>
               <COOKIE NAME="cookie_name" 
                       VALUE="value"   
                       NONEXIST="YES|NO"/>
               <HEADER NAME="HTTP_request_header" VALUE="value"/>
   </URL>
</INVALIDATION>

7.5.2 無効化レスポンスの構文

BASICSELECTOR無効化リクエストの無効化レスポンスは、次の形式で返されます。

<?xml version="1.0"?> 
<!DOCTYPE INVALIDATIONRESULT SYSTEM "internal:///WCSinvalidation.dtd">
<INVALIDATIONRESULT VERSION="WCS-1.1">
   <SYSTEM>
     <SYSTEMINFO NAME="name" VALUE="value"/>
   </SYSTEM>  
   <OBJECTRESULT>
     <BASICSELECTOR URI="URL">
     </BASICSELECTOR>
     <RESULT ID="ID" STATUS="status" NUMINV="number"/>
     <INFO VALUE="value"/>
   </OBJECTRESULT>
</INVALIDATIONRESULT>

ADVANCEDSELECTOR無効化リクエストの無効化レスポンスは、次の形式で返されます。

<?xml version="1.0"?> 
<!DOCTYPE INVALIDATIONRESULT SYSTEM "internal:///WCSinvalidation.dtd">
<INVALIDATIONRESULT VERSION="WCS-1.1">
   <SYSTEM>
     <SYSTEMINFO NAME="name" VALUE="value"/>
   </SYSTEM>  
   <OBJECTRESULT>
    <ADVANCEDSELECTOR URIPREFIX="prefix"
                      URIEXP="URL_expression"
                      HOST="host_name:port"
                      METHOD="HTTP_request_method"
                      BODYEXP="HTTP_body"/>
      <COOKIE NAME="cookie_name" VALUE="value"/>
      <HEADER NAME="HTTP_request_header" VALUE="value"/>
      <OTHER NAME="URI|BODY|QUERYSTRING_PARAMETER|SEARCHKEY"
             TYPE="SUBSTRING|REGEX"
             VALUE="value"/>
     </ADVANCEDSELECTOR>
     <RESULT ID="ID" STATUS="status" NUMINV="number"/>
     <INFO VALUE="value"/>
   </OBJECTRESULT>
</INVALIDATIONRESULT>

有効な無効化レスポンスの先頭は、次のとおりです。

<?xml version="1.0"?>
<!DOCTYPE INVALIDATIONRESULT SYSTEM "internal:///WCSinvalidation.dtd">

最初の行ではXMLのリリース1.0が指定されます。2行目は、レスポンスが、XML文書タイプとしてWCSinvalidation.dtdファイルを使用する無効化レスポンスであることを示しています。

ルート要素INVALIDATIONRESULTには、表7-2に説明する属性と要素が含まれています。BASICSELECTORおよびADVANCEDSELECTORについては、表7-1で説明されています。

表7-2 INVALIDATIONRESULTの要素および属性

無効化処理用の要素/属性 説明

VERSION属性

XML文書タイプとして使用するWCSinvalidation.dtdファイルのバージョン番号。

SYSTEM要素

INVALIDATIONRESULT要素のオプション要素。

SYSTEM要素はオプションです。SYSTEM要素はSYSTEMINFO要素が必要です。

SYSTEMINFO要素

SYSTEM要素の必須要素。

可能なNAME/VALUEペアを次に示します。

NAME="WCS_CACHE_NAME" VALUE="string"

このペアは、キャッシュの名前を指定します。

RESULT要素

次の属性を使用します。

  • ID属性: 無効化レスポンスで送信されたすべての無効化オブジェクトの順序番号。無効化リクエストで複数のセレクタが指定された場合、順序番号は最初のセレクタが1で始まり、その後のセレクタに順番に番号が振られます。

  • STATUS属性: 無効化のステータス。

    - SUCCESS: 無効化が成功した場合

    - URI NOT CACHEABLE: キャッシュ不可のオブジェクトの場合

    - URI NOT FOUND: オブジェクトが見つからない場合

  • NUMINV属性: 無効化リクエスト時に無効にされたオブジェクトの数。

INFO要素

無効化リクエストのINFO要素内に指定されているコメントを返します。


7.5.3 無効化プレビュー・リクエストの構文

無効化をテストするには、次の構文を使用して、無効にするBASICSELECTORオブジェクトのリストをプレビューします。

<?xml version="1.0"?>
<!DOCTYPE INVALIDATIONPREVIEW SYSTEM "internal:///WCSinvalidation.dtd">
<INVALIDATIONPREVIEW VERSION="WCS-1.1" STARTNUM="start_number" MAXNUM="max_number">
     <BASICSELECTOR URI="URL"/>
</INVALIDATIONPREVIEW>

無効にするADVANCEDSELECTORオブジェクトのリストをプレビューするには、次の構文を使用します。

<?xml version="1.0"?>
<!DOCTYPE INVALIDATIONPREVIEW SYSTEM "internal:///WCSinvalidation.dtd">
<INVALIDATIONPREVIEW VERSION="WCS-1.1" STARTNUM="start_number" MAXNUM="max_number">
    <ADVANCEDSELECTOR URIPREFIX="prefix"
                      URIEXP="URL_expression"
                      HOST="host_name:port"
                      METHOD="HTTP_request_method"
                      BODYEXP="HTTP_body"
      <COOKIE NAME="cookie_name" VALUE="value"/>
      <HEADER NAME="HTTP_request_header" VALUE="value"/>
      <OTHER NAME="URI|BODY|QUERYSTRING_PARAMETER|SEARCHKEY"  
             TYPE="SUBSTRING|REGEX"
             VALUE="value"/>
    </ADVANCEDSELECTOR>
</INVALIDATIONPREVIEW>

有効な無効化プレビュー・リクエストのボディの先頭は、次のとおりです。

<?xml version="1.0"?>
<!DOCTYPE INVALIDATIONPREVIEW SYSTEM "internal:///WCSinvalidation.dtd">

最初の行ではXMLのリリース1.0が指定されます。2行目は、リクエストが、XML文書タイプとしてWCSinvalidation.dtdファイルを使用する無効化プレビュー・リクエストであることを示しています。

ルート要素INVALIDATIONPREVIEWには、表7-3に説明する属性が含まれています。BASICSELECTORおよびADVANCEDSELECTORについては、表7-1で説明されています。

表7-3 INVALIDATIONPREVIEWの属性

無効化処理用の要素/属性 説明

VERSION属性

無効化プレビューの必須属性。

VERSION="WCS-1.1"を、XML文書タイプとして使用するWCSinvalidation.dtdファイルのバージョンとして使用します。

STARTNUM属性

無効化プレビューの必須属性。

リストされる最初のオブジェクトを表す番号を入力します。Oracle Web Cacheでは、番号0(ゼロ)からオブジェクトのカウントが始まります。

MAXNUM属性

無効化プレビューの必須属性。

リストされるオブジェクトの数を入力します。

無効化基準を満たすオブジェクトが指定した数よりも少ない場合、Oracle Web Cacheでは、基準を満たすオブジェクトのURLのみがリストされます。

無効化基準を満たすオブジェクトが指定した数よりも多い場合は、Oracle Web Cacheにより、リクエストした数のオブジェクトのURLがリストされます。無効化基準を満たすオブジェクトの合計数も返されます。追加オブジェクトのURLリストを取得するには、次のオブジェクト・セットの開始を指定する異なるSTARTNUMを含む別のプレビュー・リクエストを送信します。


7.5.4 無効化プレビュー・レスポンスの構文

プレビュー・リクエストに対する無効化プレビュー・レスポンスは、次の形式で返されます。

<?xml version="1.0"?> 
<!DOCTYPE INVALIDATIONPREVIEWRESULT SYSTEM "internal:///WCSinvalidation.dtd">
<INVALIDATIONPREVIEWRESULT VERSION="WCS-1.1" STATUS="status" NUMURLS="number" TOTALNUMURLS="total_number">
   <SELECTURL VALUE="URL">
   </SELECTEDURL>
</INVALIDATIONPREVIEWRESULT>

有効な無効化プレビュー・レスポンスの先頭は、次のとおりです。

<?xml version="1.0"?> 
<!DOCTYPE INVALIDATIONPREVIEWRESULT SYSTEM "internal:///WCSinvalidation.dtd">

最初の行ではXMLのリリース1.0が指定されます。2行目は、レスポンスが、XML文書タイプとしてWCSinvalidation.dtdファイルを使用する無効化プレビュー・レスポンスであることを示しています。

次のことに注意してください。

  • <?xml」の前に空白を入れないでください。

  • アプリケーションが無効化リクエストをサード・パーティのXMLパーサーと共有している場合、"internal:///WCSinvalidation.dtd"のかわりに次のパスを使用します。

    "http://www.oracle.com/webcache/90400/WCSinvalidation.dtd"
    

ルート要素INVALIDATIONPREVIEWRESULTには、表7-4に説明する属性と要素が含まれています。BASICSELECTORおよびADVANCEDSELECTORについては、表7-1で説明されています。

表7-4 INVALIDATIONPREVIEWRESULTの要素および属性

無効化処理用の要素/属性 説明

VERSION属性

XML文書タイプとして使用するWCSinvalidation.dtdファイルのバージョン番号。

STATUS属性

プレビューのステータス。

  • SUCCESS: 無効化が成功した場合

  • URI NOT CACHEABLE: キャッシュ不可のオブジェクトの場合

  • URI NOT FOUND: オブジェクトが見つからない場合

STARTNUM属性

リストされる最初のオブジェクトを示す番号。

NUMURLS属性

このプレビュー結果で返されるURLの数。

TOTALNUMURLS属性

BASICSELECTORまたはADVANCEDSELECTORセレクタに一致するURLの数。

SELECTEDURL要素

無効にされるBASICSELECTORまたはADVANCEDSELECTORセレクタに一致するURL。


7.5.5 無効化の例

この項には、次の無効化リクエストの例が含まれます。

この項の例ではPOSTメソッドを使用する必要があり、ヘッダーのcontent_length: #bytes部でバイト(文字)数を送信する必要もあります。content_length: #bytes行の後、XMLリクエストまたはBODY情報の前に改行を1回入れる必要があるため、注意してください。

7.5.5.1 例: 1つのオブジェクトを無効にする

次のリクエストにより、ファイル/images/logo.gifを無効にします。

<?xml version="1.0"?>
<!DOCTYPE INVALIDATION SYSTEM "internal:///WCSinvalidation.dtd">
<INVALIDATION VERSION="WCS-1.1">
   <OBJECT>
     <BASICSELECTOR URI="http://www.company.com:80/images/logo.gif"/>
     <ACTION/>
   </OBJECT>
</INVALIDATION>

無効化レスポンス:

<?xml version="1.0"?> 
<!DOCTYPE INVALIDATIONRESULT SYSTEM "internal:///WCSinvalidation.dtd">
<INVALIDATIONRESULT VERSION="WCS-1.1">
   <OBJECTRESULT>
     <BASICSELECTOR URI="http://www.company.com:80/images/logo.gif"/>
     <RESULT ID="1" STATUS="SUCCESS" NUMINV="1"/>
     </OBJECTRESULT>
</INVALIDATIONRESULT>

次のリクエストにより、BASICSELECTOR要素を使用して、/contacts/contacts.htmlに完全一致するオブジェクトを無効にします。

<?xml version="1.0"?>
<!DOCTYPE INVALIDATION SYSTEM "internal:///WCSinvalidation.dtd">
<INVALIDATION VERSION="WCS-1.1">
  <OBJECT>
    <BASICSELECTOR URI="http://www.company.com:80/contacts/contacts.html"/>
    <ACTION REMOVALTTL="0"/>
  </OBJECT>
</INVALIDATION>
    

このリクエストは、ADVANCEDSELECTOR要素を使用した次のリクエストと同じです。このリクエストでは、HOST属性でサイト情報が指定されています。

<?xml version="1.0"?>
<!DOCTYPE INVALIDATION SYSTEM "internal:///WCSinvalidation.dtd">
<INVALIDATION VERSION="WCS-1.1">
  <OBJECT>
    <ADVANCEDSELECTOR URIPREFIX="/contacts/" URIEXP="^/contacts/contacts\.html$" HOST="www.company.com:80"/>
    <ACTION REMOVALTTL="0"/>
  </OBJECT>
</INVALIDATION>

2番目のリクエストでは、URIPREFIX属性でサイト情報が指定されています。

<?xml version="1.0"?>
<!DOCTYPE INVALIDATION SYSTEM "internal:///WCSinvalidation.dtd">
<INVALIDATION VERSION="WCS-1.1">
  <OBJECT>
    <ADVANCEDSELECTOR URIPREFIX="http://www.company.com/contacts/" URIEXP="^/contacts/contacts\.html$"/>
    <ACTION REMOVALTTL="0"/>
  </OBJECT>
</INVALIDATION>
    

ADVANCEDSELECTOR要素ではURIPREFIX属性が使用されます。この属性は、ディレクトリ構造の横断に使用されます。無効化が正しいツリー・レベルに到達するのが早いほど、無効化プロセスは早く完了します。これらの2つの例のうち、BASICSELECTOR要素を使用したリクエストはディレクトリ構造の横断が実行されないため、より効率的です。

7.5.5.2 例: 複数のオブジェクトを無効にする

次のリクエストにより、summary.jspおよびsummary.gifの2つのオブジェクトを無効にします。さらに、このリクエストにより、コメント"summary.jsp"および"summary.gif"が無効化の結果およびイベント・ログに含まれます。

<?xml version="1.0"?>
<!DOCTYPE INVALIDATION SYSTEM "internal:///WCSinvalidation.dtd">
<INVALIDATION VERSION="WCS-1.1">
  <OBJECT>
    <ADVANCEDSELECTOR URIPREFIX="/global/sales/" URIEXP="summary.jsp\?year=2001" HOST="www.company.com:80"/>
      <COOKIE NAME="group" VALUE="asia"/>
    </ADVANCEDSELECTOR>
    <ACTION />
    <INFO VALUE="summary.jsp"/>
  </OBJECT>
  <OBJECT>
    <ADVANCEDSELECTOR URIPREFIX="/image/" URIEXP="summary.*\.gif$" HOST="www.company.com:80"/>
    <INFO VALUE="summary.gif"/>
    <ACTION />
  </OBJECT>
</INVALIDATION>

無効化レスポンス:

<?xml version="1.0"?> 
<!DOCTYPE INVALIDATIONRESULT SYSTEM "internal:///WCSinvalidation.dtd">
<INVALIDATIONRESULT VERSION="WCS-1.1">
  <OBJECTRESULT>
    <ADVANCEDSELECTOR URIPREFIX="/global/sales/" URIEXP="summary.jsp\?year=2001" HOST="www.company.com:80"/>
      <COOKIE  NAME="group"  VALUE="asia"  />
    </ADVANCEDSELECTOR>
    <RESULT ID="1" STATUS="SUCCESS" NUMINV="2"/>
    <INFO VALUE="summary.jsp"/>
  </OBJECTRESULT>
  <OBJECTRESULT>
    <ADVANCEDSELECTOR URIPREFIX="/image/" URIEXP="summary.*\.gif$" HOST="www.company.com:80"/>
    </ADVANCEDSELECTOR>
    <RESULT ID="2" STATUS="SUCCESS" NUMINV="14"/>
    <INFO VALUE="summary.gif"/>
  </OBJECTRESULT>
</INVALIDATIONRESULT>

イベント・ログには、次のメッセージが書き込まれます。

[15/Oct/2008:19:26:46 +0000] [notification 11748] [invalidation] [ecid:
 21085932167,0] Invalidation with INFO 'summary.jsp' has returned with status
 'SUCCESS'; number of objects invalidated: '2'.
.
.
.
[15/Oct/2008:19:26:46 +0000] [notification 11748] [invalidation] [ecid:
 21085932167,0] Invalidation with INFO 'summary.gif' has returned with status
 'SUCCESS'; number of objects invalidated: '14'.

7.5.5.3 例: オブジェクトのサブツリーを無効にする

次のリクエストにより、/images/ディレクトリ内のオブジェクトをすべて無効にします。

<?xml version="1.0"?>
<!DOCTYPE INVALIDATION SYSTEM "internal:///WCSinvalidation.dtd">
<INVALIDATION VERSION="WCS-1.1">
   <OBJECT>
     <ADVANCEDSELECTOR URIPREFIX="/images/" HOST="www.company.com:80"/>
     <ACTION REMOVALTTL="0"/>
   </OBJECT>
</INVALIDATION>

無効化レスポンス:

<?xml version="1.0"?> 
<!DOCTYPE INVALIDATIONRESULT SYSTEM "internal:///WCSinvalidation.dtd">
<INVALIDATIONRESULT VERSION="WCS-1.1">
   <OBJECTRESULT>
     <ADVANCEDSELECTOR URIPREFIX="/images/" HOST="www.company.com:80"/>
     <RESULT ID="1" STATUS="SUCCESS" NUMINV="125"/>
   </OBJECTRESULT>
</INVALIDATIONRESULT>

次のリクエストにより、/contacts/ディレクトリ内でファイル名が.htmlで終わり、oracleの値を持つCookie名custを使用するオブジェクトをすべて無効にします。

<?xml version="1.0"?>
<!DOCTYPE INVALIDATION SYSTEM "internal:///WCSinvalidation.dtd">
<INVALIDATION VERSION="WCS-1.1">
  <OBJECT>
    <ADVANCEDSELECTOR URIPREFIX="/contacts/" URIEXP="\.html$" HOST="www.company.com:80"/>
      <COOKIE NAME="cust" VALUE="oracle"/>
    </ADVANCEDSELECTOR>
    <ACTION REMOVALTTL="0"/>
  </OBJECT>
</INVALIDATION>

無効化レスポンス:

<?xml version="1.0"?> 
<!DOCTYPE INVALIDATIONRESULT SYSTEM "internal:///WCSinvalidation.dtd">
<INVALIDATIONRESULT VERSION="WCS-1.1">
   <OBJECTRESULT>
     <ADVANCEDSELECTOR URIPREFIX="/contacts"/> URIEXP="\.html$" HOST="www.company.com:80"/>
      <COOKIE NAME="cust" VALUE="oracle"/>
     </ADVANCEDSELECTOR>
      <RESULT ID="1" STATUS="SUCCESS" NUMINV="45"/>
   </OBJECTRESULT>
</INVALIDATIONRESULT>

7.5.5.4 例: 特定のWebサイトのすべてのオブジェクトを無効にする

次のリクエストにより、/内のオブジェクトをすべて無効にします。

<?xml version="1.0"?>
<!DOCTYPE INVALIDATION SYSTEM "internal:///WCSinvalidation.dtd">
<INVALIDATION VERSION="WCS-1.1">
   <OBJECT>
     <ADVANCEDSELECTOR URIPREFIX="/" HOST="www.company.com:80"/>
     <ACTION REMOVALTTL="0"/>
   </OBJECT>
</INVALIDATION>

無効化レスポンス:

<?xml version="1.0"?> 
<!DOCTYPE INVALIDATIONRESULT SYSTEM "internal:///WCSinvalidation.dtd">
<INVALIDATIONRESULT VERSION="WCS-1.1">
   <OBJECTRESULT>
     <ADVANCEDSELECTOR URIPREFIX="/" HOST="www.company.com:80"/>
      <RESULT ID="1" STATUS="SUCCESS" NUMINV="17"/>
   </OBJECTRESULT>
</INVALIDATIONRESULT>

7.5.5.5 例: 接頭辞の一致を使用してオブジェクトを無効にする

URIPREFIX属性とURIEXP属性の関係をさらに理解できるように、次の例を使って説明します。

次の構文は、/cec/cstage/graphic*ディレクトリ内のsample.gifファイルを無効にします。

<ADVANCEDSELECTOR URIPREFIX="/cec/cstage/"
   URIEXP="graphic.*/sample\.gif">
</ADVANCEDSELECTOR>

"graphic.*/sample\.gif"で使用されている「.*」は正規表現の文字で、graphicで始まるすべてのディレクトリに一致します。sample\.gifで使用されている「.」は、文字どおり解釈されるようにエスケープされています。

次の構文は、graphic*という名前のディレクトリを見つけるようOracle Web Cacheに指示します。

<ADVANCEDSELECTOR URIPREFIX="/cec/cstage/graphic*/" URIEXP="sample\.gif" HOST="www.company.com:80"/>
</ADVANCEDSELECTOR>

次の構文は、URIに/cec/cstage?ecaction=viewitemが含まれているオブジェクトを無効にします。

<ADVANCEDSELECTOR URIPREFIX="/cec/" URIEXP="cstage\?ecaction=viewitem" HOST="www.company.com:80"/>
</ADVANCEDSELECTOR>

?」がバックスラッシュでエスケープされている点に注意してください。

/cec/cstage?ecaction=viewitem&zip=94405/cec/cstage?ecaction=viewitem&zip=94305などのURLは一致して無効になりますが、/usa/cec/cstage?ecaction=viewitem&zip=94209は一致しないので無効になりません。

7.5.5.6 例: サブストリングと問合せ文字列の一致を使用してオブジェクトを無効にする

次のリクエストは、サブストリング/post/およびhtmに一致する/内のすべてのオブジェクトを無効にします。さらに、このリクエストは、無効化の結果とイベント・ログにコメント"remove-htm-under-all-post-dir"が書き込まれるようにします。

<?xml version="1.0"?>
<!DOCTYPE INVALIDATION SYSTEM "internal:///WCSinvalidation.dtd">
<INVALIDATION VERSION="WCS-1.1">
  <OBJECT>
    <ADVANCEDSELECTOR URIPREFIX="/"
                      HOST="www.company.com:80">
      <OTHER NAME="URI" TYPE="SUBSTRING" VALUE="/post/"/>
      <OTHER NAME="URI" TYPE="SUBSTRING" VALUE="htm"/>
    </ADVANCEDSELECTOR>
    <ACTION REMOVALTTL="0" />
    <INFO VALUE="remove-htm-under-all-post-dir"/>
  </OBJECT>
</INVALIDATION>

無効化レスポンス:

<?xml version="1.0"?> 
<!DOCTYPE INVALIDATIONRESULT SYSTEM "internal:///WCSinvalidation.dtd">
<INVALIDATIONRESULT VERSION="WCS-1.1">
   <OBJECTRESULT>
     <ADVANCEDSELECTOR URIPREFIX="/" HOST="www.company.com:80"/>
       <OTHER NAME="URI" TYPE="SUBSTRING" VALUE="/post/"/>
       <OTHER NAME="URI" TYPE="SUBSTRING" VALUE="htm"/>      
      <RESULT ID="1" STATUS="SUCCESS" NUMINV="52"/>
      <INFO VALUE="remove-htm-under-all-post-dir"/>
   </OBJECTRESULT>
</INVALIDATIONRESULT>

イベント・ログには、次のメッセージが書き込まれます。

[15/Oct/2008:19:26:46 +0000] [notification 11748] [invalidation] [ecid:
 21085932167,0] Invalidation with INFO 'remove-htm-under-all-post-dir has
 returned with status 'SUCCESS'; number of objects invalidated: '52'.

次のリクエストは、サブストリング/view_building.asp、および埋込みURLパラメータ値のペアbuilding=8floor=10に一致する、/corporate/asp/内のすべてのオブジェクトを無効にします。さらに、このリクエストは、無効化の結果とイベント・ログにコメント"remove-view-building8-10th-floor"が書き込まれるようにします。

<?xml version="1.0"?>
<!DOCTYPE INVALIDATION SYSTEM "internal:///WCSinvalidation.dtd">
<INVALIDATION VERSION="WCS-1.1">
  <OBJECT>
    <ADVANCEDSELECTOR URIPREFIX="/corporate/asp/"
                      HOST="www.company.com:80">
      <OTHER NAME="URI" TYPE="SUBSTRING" VALUE="/view_building.asp"/>
      <OTHER NAME="QUERYSTRING_PARAMETER" TYPE="SUBSTRING" VALUE="building=8"/>
      <OTHER NAME="QUERYSTRING_PARAMETER" TYPE="SUBSTRING" VALUE="floor=10"/>
    </ADVANCEDSELECTOR>
    <ACTION REMOVALTTL="0" />
    <INFO VALUE="remove-view-building8-10th-floor"/>
  </OBJECT>
</INVALIDATION>

無効化レスポンス:

<?xml version="1.0"?> 
<!DOCTYPE INVALIDATIONRESULT SYSTEM "internal:///WCSinvalidation.dtd">
<INVALIDATIONRESULT VERSION="WCS-1.1">
   <OBJECTRESULT>
     <ADVANCEDSELECTOR URIPREFIX="/" HOST="www.company.com:80"/>
       <OTHER NAME="URI" TYPE="SUBSTRING" VALUE="/view_building.asp"/>
       <OTHER NAME="QUERYSTRING_PARAMETER" TYPE="SUBSTRING" VALUE="building=8"/>
       <OTHER NAME="QUERYSTRING_PARAMETER" TYPE="SUBSTRING" VALUE="floor=10"/>     
      <RESULT ID="1" STATUS="SUCCESS" NUMINV="3"/>
      <INFO VALUE="remove-view-building8-10th-floor"/>
   </OBJECTRESULT>
</INVALIDATIONRESULT>

イベント・ログには、次のメッセージが書き込まれます。

[15/Oct/2008:19:26:46 +0000] [notification 11748] [invalidation] [ecid: 21085932
167,0] Invalidation with INFO 'remove-view-building8-10th-floor' has returned with status 'SUCCESS'; number of objects invalidated: '3'.

QUERYSTRING_PARAMETERを使用して無効化を最適化する方法は、第7.7.2.2項を参照してください。

7.5.5.7 例: 検索キーの一致を使用してオブジェクトを無効にする

次のリクエストにより、次の項目に一致する/pls/publicuser/内のオブジェクトをすべて無効にします。

  • サブストリング/pls/publicuser/!MODULE.wwpob_page.show

  • HTTPリクエスト・ヘッダーx-oracle-cache-userおよび値PUBLICUSER

  • 検索キーtemplate_id=33,31345を含むSurrogate-Keyレスポンス・ヘッダー・フィールド

<?xml version="1.0"?>
<!DOCTYPE INVALIDATION SYSTEM "internal:///WCSinvalidation.dtd">
<INVALIDATION VERSION="WCS-1.1">
<OBJECT>
    <ADVANCEDSELECTOR URIPREFIX="/pls/publicuser/" HOST="www.company.com:80"
      METHOD="POST">
      <OTHER NAME="SEARCHKEY" VALUE="template_id=33,31345"/>
      <HEADER NAME="x-oracle-cache-user" VALUE="PUBLICUSER"/>
      <OTHER NAME="URI" TYPE="SUBSTRING"
        VALUE="/pls/publicuser/!MODULE.wwpob_page.show"/>
    </ADVANCEDSELECTOR>
    <ACTION REMOVALTTL="0"/>
</OBJECT>
</INVALIDATION>

無効化レスポンス:

<?xml version="1.0"?> 
<!DOCTYPE INVALIDATIONRESULT SYSTEM "internal:///WCSinvalidation.dtd">
<INVALIDATIONRESULT VERSION="WCS-1.1">
   <OBJECTRESULT>
    <ADVANCEDSELECTOR URIPREFIX="/pls/publicuser/" HOST="www.company.com:80"
      METHOD="POST">
      <OTHER NAME="SEARCHKEY" VALUE="template_id=33,31345"/>
      <HEADER NAME="x-oracle-cache-user" VALUE="PUBLICUSER"/>
      <OTHER NAME="URI" TYPE="SUBSTRING"
        VALUE="/pls/publicuser/!MODULE.wwpob_page.show"/>
      <RESULT ID="1" STATUS="SUCCESS" NUMINV="3"/>
   </OBJECTRESULT>
</INVALIDATIONRESULT>

7.5.5.8 例: キャッシュ・クラスタ全体に無効化リクエストを伝播する

Fusion Middleware ControlとOracle Web Cache Managerでは、キャッシュ・クラスタで、すべてのクラスタ・メンバーへの無効化リクエストの伝播を有効または無効にできます。第3.6.5項および第3.7.4項をそれぞれ参照してください。

この設定を優先させるには、SYSTEMINFO要素の名前/値の属性ペアを使用します。NAMEWCS_PROPAGATEに設定され、VALUETRUEに設定されている場合は、Fusion Middleware ControlまたはOracle Web Cache Managerで設定されている値が無視されます。NAMEWCS_PROPAGATEに設定され、VALUEFALSEに設定されている場合は、Fusion Middleware ControlまたはOracle Web Cache Managerで設定されている値が使用されます。

次のリクエストは、ファイル/images/logo.gifを無効にして、リクエストをすべてのクラスタ・メンバーに伝播します。この例では、3つのクラスタ・メンバーがあります。

<?xml version="1.0"?>
<!DOCTYPE INVALIDATION SYSTEM "internal:///WCSinvalidation.dtd">
<INVALIDATION VERSION="WCS-1.1">
   <SYSTEM>
      <SYSTEMINFO NAME="WCS_PROPAGATE" VALUE="TRUE"/>
   </SYSTEM>
   <OBJECT>
     <BASICSELECTOR URI="/web_cache_host_name:port/images/logo.gif"/>
     <ACTION/>
   </OBJECT>
</INVALIDATION>

無効化レスポンス:

<?xml version="1.0"?> 
<!DOCTYPE INVALIDATIONRESULTDETAIL SYSTEM "internal:///WCSinvalidation.dtd">
<INVALIDATIONRESULTDETAIL VERSION="WCS-1.1">
  <INVALIDATIONRESULT VERSION="WCS-1.1">
     <SYSTEM>
       <SYSTEMINFO NAME="WCS_CACHE_NAME" VALUE="Cache_A"/>
     </SYSTEM>
     <OBJECTRESULT>
       <BASICSELECTOR URI="http://www.company.com:80/images/logo.gif"/>
       <RESULT ID="1" STATUS="SUCCESS" NUMINV="1"/>
     </OBJECTRESULT>
  </INVALIDATIONRESULT>
  <INVALIDATIONRESULT VERSION="WCS-1.1">
     <SYSTEM>
       <SYSTEMINFO NAME="WCS_CACHE_NAME" VALUE="Cache_B"/>
     </SYSTEM>
     <OBJECTRESULT>
       <BASICSELECTOR URI="http://www.company.com:80/images/logo.gif"/>
       <RESULT ID="1" STATUS="SUCCESS" NUMINV="1"/>
     </OBJECTRESULT>
  </INVALIDATIONRESULT>
  <INVALIDATIONRESULT VERSION="WCS-1.1">
     <SYSTEM>
       <SYSTEMINFO NAME="WCS_CACHE_NAME" VALUE="Cache_C"/>
     </SYSTEM>
     <OBJECTRESULT>
       <BASICSELECTOR URI="http://www.company.com:80/images/logo.gif"/>
       <RESULT ID="1" STATUS="SUCCESS" NUMINV="1"/>
     </OBJECTRESULT>
  </INVALIDATIONRESULT>
</INVALIDATIONRESULTDETAIL>

7.5.5.9 例: 無効化をプレビューする

次のリクエストは、*.htmで終わるオブジェクトを最大50個プレビューします。

<?xml version="1.0"?>
<!DOCTYPE INVALIDATIONPREVIEW SYSTEM
"internal:///WCSinvalidation.dtd">
<INVALIDATIONPREVIEW VERSION="WCS-1.1" STARTNUM="0" MAXNUM="50">
  <ADVANCEDSELECTOR URIPREFIX="http://company-sun/"
                    URIEXP=".*\.htm" >
  </ADVANCEDSELECTOR>
</INVALIDATIONPREVIEW>

無効化レスポンス:

"<?xml version="1.0"?>
<!DOCTYPE INVALIDATIONPREVIEWRESULT SYSTEM
"internal:///WCSinvalidation.dtd">
<INVALIDATIONPREVIEWRESULT VERSION="WCS-1.1" STATUS="SUCCESS"
                           STARTNUM="0" NUMURLS="2" TOTALNUMURLS="2">
  <SYSTEM>
    <SYSTEMINFO NAME="WCS_CACHE_NAME" VALUE="server-cache"/>
  </SYSTEM>
  <SELECTEDURL VALUE="/company-sun:80/index.htm "/>
  <SELECTEDURL VALUE="/company-sun:80/dtd.htm "/>
</INVALIDATIONPREVIEWRESULT>

7.6 検索キーによる無効化について

キャッシュ内のオブジェクトのSurrogate-Keyレスポンス・ヘッダー・フィールドで使用される1つ以上の検索キーに基づいて無効化を実行できます。

Surrogate-Keyレスポンス・ヘッダー・フィールドを使用すると、アプリケーション開発者は特定のレスポンス・オブジェクトの検索キー文字列を識別できます。検索キーは、オブジェクトのURL、CookieまたはHTTPリクエスト・ヘッダーに表示されない場合がある文字列です。検索キーの目的は、無効化に対して別の基準を提供することです。オブジェクトのURLの他に、Oracle Web Cache管理者は、キャッシュ内のSurrogate-Keyレスポンス・ヘッダー・フィールドで使用される1つ以上の検索キーに基づいて無効化を実行できます。

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

Surrogate-Key: search-key=("key" "key" "key" ...)

使用方法

使用例

次の例は、有効なSurrogate-Keyフィールドを示しています。最初の例は1つの検索キーtemplate_id=33,31345を示し、2番目の例は検索キーtemplate_id=33,31345およびcategoryを示しています。

Surrogate-Key: search-key=( "template_id=33,31345"  )

Surrogate-Key: search-key=("template_id=33,31345" "category")

次の例は、無効なSurrogate-Keyフィールドを示しています。最初の例は閉じ引用符(")のない1つの検索キー348を示し、2番目の例は検索キー値のないsearch-keyを示しています。

Surrogate-Key: search-key=( "template_id=348 )
Surrogate-Key: search-key=( )

検索キーによる無効化を有効にする方法の詳細は、第7.9項を参照してください。

7.7 バンド外無効化の開始

次の項目では、バンド外無効化を開始する方法について説明します。

7.7.1 Telnetを使用した無効化リクエストの送信

HTTP POSTリクエストで無効化リクエストを送信する際に、Oracle Web Cacheのホスト名、無効化リスニング・ポート番号および無効化リクエストを指定します。

たとえば、telnetを使用している場合は、次の手順で無効化リクエストを送信します。

  1. 無効化リスニング・ポートでOracle Web Cacheに接続します。

    telnet web_cache_host invalidation_port
    
  2. 次の構文のBase64エンコーディング文字列を使用して、POSTメッセージ・ヘッダーを指定し、invalidatorアカウントを認証します。

    POST /x-oracle-cache-invalidate http/1.0|1
    Authorization: BASIC <base64 encoding of invalidator:invalidator_password> 
    content-length:#bytes
    

    次に示すのはAuthorization行の例です。

    Authorization: BASIC aW52YWxpZGF0b3I6aW52YWxpZGF0b3I= 
    

    この例のaW52YWxpZGF0b3I6aW52YWxpZGF0b3I=は、エンコードされたinvalidatorユーザー名とパスワード(invalidator:invalidator)です。

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

    • パスワードのBase64エンコーディングの詳細は、http://www.rfc-editor.org/を参照してください。

    • EncodeBase64.javaスクリプトを使用して、invalidator:invalidator_passwordのBase64文字列を生成する方法の詳細は、readme.examples.htmlを参照してください。このファイルは次のディレクトリにあります。

      (UNIX) ORACLE_HOME/webcache/docs
      (Windows) ORACLE_HOME\webcache/docs
      
    • 無効化パスワードの変更の詳細は、第5.2項を参照してください。

  3. 改行を1回入力します。

  4. 第7.5項に指定されているように、XML構文の無効化リクエストを送信します。

7.7.2 Oracle Web Cache Managerを使用した無効化リクエストの送信

Oracle Web Cache Managerの使いやすいインタフェースにより、キャッシュされたオブジェクトを簡単に無効化できます。このインタフェースを使用する利点は、管理者が複雑なHTTPおよびXMLフォーマットを使用する必要がなく、その結果、エラーが減少するという点です。管理者が指定する必要があるのは、無効にするオブジェクトと、オブジェクトを無効にするタイミングのみです。

Oracle Web Cache Managerを使用すると、1つのオブジェクトに対して基本無効化リクエストを送信するか、複数のオブジェクトに対して拡張無効化リクエストを送信できます。詳細は、次の各項目を参照してください。


注意:

「Basic Content Invalidation」ページまたは「Advanced Content Invalidation」ページから無効化リクエストを発行したときに次のエラーが発生した場合は、サーバー・プロセスcacheまたはadminを再起動してください。

Internal error: can't connect to Oracle Web Cache Invalidation Listening Port

無効化ポートのプロパティを変更した場合は、cacheサーバー・プロセスを再起動してください。「セキュリティ」ページでadministratorアカウントのパスワードを変更した場合は、cacheおよびadminの各サーバー・プロセスを再起動してください。いずれの構成変更の場合も、cacheサーバー・プロセスが再起動されるまで、無効化リクエストではエラーが返されます。

再起動の方法は、第2.13項を参照してください。


7.7.2.1 基本無効化リクエストの発行

Oracle Web Cache Managerを使用して基本無効化リクエストを送信するには、次の手順を実行します。

  1. Oracle Web Cache Managerのナビゲータ・フレームで、「Operations」→「Basic Content Invalidation」を選択します。第2.7.2項を参照してください。

    右ペインに「Basic Content Invalidation」ページが表示されます。

  2. For Cache」リストからキャッシュを1つ選択します (キャッシュ・クラスタを構成済の場合にかぎり、リストには複数のキャッシュが表示されます)。無効化を伝播するようにクラスタが構成されている場合は、選択したキャッシュは、無効化コーディネータに指定されます。この無効化コーディネータによって、無効化リクエストは他のキャッシュ・クラスタ・メンバーに伝播されます。クラスタが無効化を伝播するように構成されていない場合、選択できるキャッシュはオブジェクトの無効化元キャッシュのみです)。

  3. Search Criteria」セクションで、次の検索基準を選択します。

    • Remove all cached objects: キャッシュ内のオブジェクトをすべて削除する場合に選択します。

    • Enter exact URL for removal: 無効にするオブジェクトのURLを指定します。完全パスおよびファイル名を含めてください。

      注意: Oracle Web Cacheでは、アンパサンド(&)、右山カッコ(>)、左山カッコ(<)、二重引用符(")および一重引用符(')がエスケープされるため、このフィールドにこれらのエスケープ文字を入力できます。

  4. オプションで、無効にするオブジェクトのリストをプレビューして、削除するオブジェクトの選択が誤っていないことを確認できます。オブジェクトのリストをプレビューするには、次の手順を実行します。

    1. Action」セクションで、無効化基準に一致するオブジェクトの「Preview」リストを選択します。

    2. Object Range」を指定します。

      • From: リストされる最初のオブジェクトを表す番号を入力します。Oracle Web Cacheでは、番号0(ゼロ)からオブジェクトのカウントが始まります。

      • To: リストされるオブジェクトの数を入力します。

        無効化基準を満たすオブジェクトが指定した数よりも少ない場合、Oracle Web Cacheでは、基準を満たすオブジェクトのみのURLがリストされます。

        無効化基準を満たすオブジェクトが指定した数よりも多い場合は、Oracle Web Cacheにより、リクエストした数のオブジェクトのURLがリストされます。無効化基準を満たすオブジェクトの合計数も返されます。追加オブジェクトのURLリストを取得するには、次のオブジェクト・セットの開始を指定する異なる「From」数を含む別のプレビュー・リクエストを送信します。

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

      無効化基準を満たすオブジェクトが「Invalidation Preview Results」メッセージ・ボックスにリスト表示されます。Oracle Web Cache Managerでは、有効なオブジェクトのみがリストされます。キャッシュには、期限切れまたは無効にされたオブジェクトが含まれることもありますが、それらはリストされません。

      無効にするオブジェクトがリストされている場合は、次の手順に進みます。リストされていない場合は、無効化基準を変更してもう一度プレビューします。

  5. Action」セクションで、いずれかのオプションを選択して、無効になったオブジェクトの処理方法を指定します。

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

    • Remove objects no later than <number> <time> after submission: Oracle Web Cacheでオブジェクトを無効としてマークし、オリジン・サーバーの容量に基づいてリフレッシュします。オブジェクトがキャッシュ内に存続可能な最大期間を入力します。このオプションを選択すると、Oracle Web Cacheではヒューリスティックが適用され、これ以上ドキュメントを送信しない最適なタイミングが決定されます。

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

Oracle Web Cacheにより、無効化リクエストが処理され、無効化ステータスが表示されている「Cache Cleanup Result」ダイアログ・ボックスが返されます。次の図はこのダイアログ・ボックスを示しています。

invalid.gifの説明が続きます
図invalid.gifの説明

キャッシュ・クラスタ環境では、「任意のクラスタ・メンバーに送信された無効化リクエストは、すべてのクラスタ・メンバーに伝播されます。」を有効にすると、Oracle Web Cacheは無効化リクエストを、無効化コーディネータとして動作する1つのクラスタ・メンバーに送信します。コーディネータは無効化リクエストを他のクラスタ・メンバーに伝播します。すべてのクラスタ・メンバーに対して無効化が完了すると、Oracle Web Cacheは、各クラスタ・メンバーについて、キャッシュ名、無効化リクエストのステータスおよび無効化されたオブジェクト数をリストする「キャッシュ・クリーンアップ」ボックスを返します。

無効化伝播を有効にする方法は、第3.6.5項を参照してください。

7.7.2.2 拡張無効化リクエストの発行

Oracle Web Cache Managerを使用して拡張無効化リクエストを送信するには、次の手順を実行します。

  1. ナビゲータ・フレームで、「Operations」→「Advanced Content Invalidation」を選択します。

    右ペインに「Advanced Content Invalidation」ページが表示されます。

  2. For Cache」リストからキャッシュを1つ選択します。(キャッシュ・クラスタを構成済みの場合にかぎり、リストには複数のキャッシュが表示されます。)

  3. Search Criteria」セクションで、次の検索基準を選択します。


    注意:

    Oracle Web Cacheでは、アンパサンド(&)、右山カッコ(>)、左山カッコ(<)、二重引用符(")および一重引用符(')がエスケープされるため、これらのエスケープ文字を検索基準フィールドに入力できます。

    • URL Path Prefix: 必須。無効にするオブジェクトのパス接頭辞を指定します。パス接頭辞は、http|https://host_name:port/path/filenameまたは"/"で始めて、"/"で終わる必要があります。

      host_name:portはオプションです。「Host Name」フィールドで、サイトのホスト名とポートも指定できます。

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

    • Host Name: オプション。サイトのホスト名とポート番号(host_name:port)を指定します。HTTPのデフォルト・ポートはポート80です。

      このフィールドは、「URL Path Prefix」にhttp|https://host_name:port/path/filenameが含まれていない場合は必須です。

    • HTTP Method: オプション。無効にするオブジェクトのHTTPリクエスト・メソッド(GETまたはPOST)を選択します。デフォルト値はGETです。

    • URL Expression: オプション。URL Path Prefix」内に存在する無効にするオブジェクトのURLを指定します。次に、厳密な文字列照合を行う場合は「substring」、正規表現照合を行う場合は「regular expression」を選択して、照合方法を指定します。

      値が入力されなかった場合、「URL Path Prefix」内のすべてのオブジェクトが一致します。

    • POST Body Expression: オプション。HTTP Method」に対して「POST」を選択した場合は、無効にするオブジェクトのHTTP POST本体を入力し、サブストリング一致の場合は「substring」を、正規表現一致の場合は「regular expression」を選択して、一致方法を指定します。


      注意:

      URL Expression」または「POST Body Expression」フィールドに対して「regular expression」を選択すると、Oracle Web Cacheは次の正規表現の予約語を解釈します。ピリオド(.)、疑問符(?)、アスタリスク(*)、大カッコ([])、中カッコ({})、キャレット(^)、ドル記号($)およびバックスラッシュ(\)。これらの文字を文字どおりに使用する場合は、その前にエスケープ文字としてバックスラッシュ(\)を置きます。

  4. オプションで、「Cookie/Header Information」セクションで、複数バージョンのオブジェクトに対する検索基準にCookie名とHTTPリクエスト・ヘッダーのどちらを使用するかを指定します。

    1. リストから、「Cookie」または「Header」を選択します。

    2. 次の情報を入力します。

      • Cookie:Name」フィールドに、無効にする複数バージョンのオブジェクトで使用されているCookie名を入力し、その値を「Value」フィールドに入力します。


        注意:

        複数のバージョンのオブジェクトとセッション・キャッシュ・ポリシーの両方に対して間違って指定されたCookieを指定する場合、無効化はこのCookieの発生に基づきます。過度の無効化を回避するには、複数バージョンのオブジェクト(「Rules for Caching, Personalization, and Compression」→「Cookie Definitions」)およびセッション・キャッシュ・ポリシー(「Rules for Caching, Personalization, and Compression」→「Session Definitions」)に対して異なるCookieを構成します。

      • Header: 無効にするオブジェクトで使用されているHTTPリクエスト・ヘッダーを「Name」フィールドに入力し、その値を「Value」フィールドに入力します。

    複数バージョンのオブジェクトに対するキャッシュ・ルールの作成方法は、第6.5.1項を参照してください。

  5. オプションで、「URL Parameters」セクションの「Name」フィールドに、無効にするオブジェクトで使用されている埋込みURLパラメータの名前を入力し、その値を「Value」フィールドに入力します。次に、「exact strings」または「regular expression」のいずれかを選択して一致方法を指定します。

  6. オプションとして、「Search Keys」セクションで、無効にするオブジェクトで使用されている「Surrogate-Key」レスポンス・ヘッダー・フィールドの検索キー名を「Key」フィールドに入力します。詳細は、第7.6項および第7.9項を参照してください。

  7. オプションで、無効にするオブジェクトのリストをプレビューして、削除するオブジェクトの選択が誤っていないことを確認できます。オブジェクトのリストをプレビューするには、次の手順を実行します。

    1. Action」セクションで、「Preview list of objects to be removed」を選択します。

    2. Object Range」を指定します。

      • From: リストされる最初のオブジェクトを表す番号を入力します。Oracle Web Cacheでは、番号0(ゼロ)からオブジェクトのカウントが始まります。

      • To: リストされるオブジェクトの数を入力します。

      無効化基準を満たすオブジェクトが指定した数よりも少ない場合、Oracle Web Cacheでは、基準を満たすオブジェクトのみのURLがリストされます。

      無効化基準を満たすオブジェクトが指定した数よりも多い場合は、Oracle Web Cacheにより、リクエストした数のオブジェクトのURLがリストされます。無効化基準を満たすオブジェクトの合計数も返されます。追加オブジェクトのURLリストを取得するには、次のオブジェクト・セットの開始を指定する異なる「From」数を含む別のプレビュー・リクエストを送信します。

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

      無効化基準を満たすオブジェクトが「Invalidation Preview Results」メッセージ・ボックスにリスト表示されます。Oracle Web Cache Managerでは、有効なオブジェクトのみがリストされます。キャッシュには、期限切れまたは無効にされたオブジェクトが含まれることもありますが、それらはリストされません。

      無効にするオブジェクトがリストされている場合は、次の手順に進みます。リストされていない場合は、無効化基準を変更してもう一度プレビューします。

  8. Action」セクションで、いずれかのオプションを選択して、無効になったオブジェクトの処理方法を指定します。

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

    • Remove objects no later than <number> <time> after submission: Oracle Web Cacheでオブジェクトを無効としてマークし、オリジン・サーバーの容量に基づいてリフレッシュします。オブジェクトがキャッシュ内に存続可能な最大期間を入力します。

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

Oracle Web Cacheにより、無効化リクエストが処理され、無効化ステータスが表示されている「Cache Cleanup」ダイアログ・ボックスが返されます。


注意:

接頭辞ベースの無効化の場合、Oracle Web Cacheが複雑なディレクトリ構造内を横断する必要があるため、無効化に多少時間がかかる場合があります。したがって、「Cache Cleanup Result」ダイアログ・ボックスが表示されるまで、「Submit」を再びクリックしないでください。無効化リクエストのキューを作成すると、Oracle Web Cacheのパフォーマンスが低下します。

7.7.3 Application Program Interface(API)を使用した自動無効化リクエスト

無効化リクエストは、Webサイトのアプリケーション・ロジックから、またはWebページの設計に使用するコンテンツ管理アプリケーションから送信することも可能です。

Oracle Web Cacheには、次の実装可能なApplication Program Interface(API)が含まれています。

  • jawc.jar(Java無効化API)

  • wxvutil.sqlおよびwxvappl.sql(PL/SQL無効化API)

これらのAPIは次のディレクトリにあります。

(UNIX) ORACLE_HOME/webcache/toolkit
(Windows) ORACLE_HOME\webcache/toolkit

これらのAPIの詳細は、次のディレクトリにあるreadme.toolkit.htmlを参照してください。

(UNIX) ORACLE_HOME/webcache/docs
(Windows) ORACLE_HOME\webcache/docs

7.7.4 データベース・トリガーを使用した自動無効化リクエスト

データベース・トリガーはデータベースに格納されているプロシージャで、表への行の追加など、特定の状況が発生した場合に実行されます。トリガーを使用して無効化リクエストを送信することが可能です。データベース・トリガーによって無効化リクエストを送信するには、オラクル社が提供するUTL_TCPパッケージを使用します。

詳細は、OracleのPL/SQLに関するドキュメントを参照してください。

7.7.5 スクリプトを使用した自動無効化

多くのWebサイトで、スクリプトを使用して、新しいコンテンツがデータベースやファイル・システムにアップロードされています。たとえば、大型のオンライン書店の場合、1日1回、PERLスクリプトを実行し、新刊の追加や価格変更をカタログ・データベースに一括してロードすることがあります。その書店では、価格変更および在庫状況を、現在Oracle Web Cacheにキャッシュされているアイテム・ビューおよび検索結果にすぐに反映させるとします。この結果を得るため、Perlスクリプトを変更して、一括ロード処理の完了後にすべてのカタログ・ビューおよび検索結果を無効にする無効化リクエストをスクリプトからキャッシュに送信するようにすることが可能です。(無効化リクエストには、データ変更の影響を受ける検索ページまたはアイテム・ビューをすべて個別にリストする必要はありません。)Oracle Web Cacheのパフォーマンス保証機能により、管理者は一度に大量のコンテンツを無効にすることが可能です。コンテンツの一部のみが変更されている場合でも、すべてのカタログ・コンテンツを無効化してかまいません。

7.8 レスポンス・ヘッダーによる無効化の有効化

Oracle Web Cacheの機能の1つであるレスポンス・ヘッダーによる無効化によって、オリジン・サーバーは、キャッシュされたコンテンツをHTTPレスポンス・ヘッダーを通じて無効化できます。

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

Oracle-WebCache-Invalidate:
([SYNCHRONOUS=ON|OFF,]
(URI="value" | ( URI_DIR="value" [(;S_KEY="value")*] )
             | ( S_KEY="value"   [(;S_KEY="value")*] ))
([,SYNCHRONOUS=ON|OFF,]
  URI="value" | ( URI_DIR="value" [(;S_KEY="value")*] ) 
              | ( S_KEY="value"   [(;S_KEY="value")*] ))*
[,SYNCHRONOUS=ON|OFF] 

表7-5に、レスポンス・ヘッダーによる無効化の制御ディレクティブを示します。

表7-5 Oracle-WebCache-Invalidateの制御ディレクティブ

制御ディレクティブ 説明

SYNCHRONOUS

SYNCHRONOUSディレクティブにより、Oracle Web Cacheは、無効化を完了するかどうかを決定してからレスポンスをクライアントに返すことができます。これは、無効化全体、つまり特定のレスポンスに対するすべての無効化レスポンス・ヘッダーの組合せに適用されます。デフォルトでは、Oracle Web Cacheは無効化が完了するまで待機し(SYNCHRONOUS=ON)、その後でレスポンスを返します。通常、オリジナル・サーバーでホストされているコンテンツは元のリクエストによって更新され、オリジナル・サーバーは、クライアントがレスポンスを受信する前にコンテンツに関連するすべてのエントリがOracle Web Cacheで無効化されるようにします。元のリクエストと無効化レスポンス・ヘッダーで識別されたコンテンツは直接リンクされています。

オリジン・サーバーが無効化レスポンス・ヘッダーを任意のリクエストに追加する場合、そのリクエストを送信したクライアントは、無効化が完了するまで待機する必要はありません。この場合、オリジン・サーバーは、無効化を処理する前にレスポンスを返すようOracle Web Cacheに指示します(SYNCHRONOUS=OFF)。

URI

無効化の指定でURIオプション・ディレクティブを使用すると、Oracle Web Cacheは指定されたURIを持つエントリを無効化できます。これは、基本無効化に相当します。

URI_DIR

無効化の指定でURI_DIRオプション・ディレクティブを使用すると、Oracle Web Cacheは指定されたURIをディレクトリと解釈し、指定されたディレクトリ内のすべてのエントリを無効化できます。これは、小規模で使用頻度の高い拡張無効化のサブセットであるURI接頭辞無効化に相当します。

URI_DIRオプション・ディレクティブと現在のURI接頭辞無効化との整合性を確保するために、ディレクトリURIの文字列はスラッシュ(/)で終わる必要があります。

S_KEY

無効化の指定でS_KEYオプション・ディレクティブを使用すると、Oracle Web Cacheは引用符付き文字列を検索キーと解釈します。これは、拡張無効化のもう1つの小さなサブセットである検索キーによる無効化に相当します。検索キーの一致では、従来の無効化と同様に、大文字小文字が区別されます。

S_KEYオプション・ディレクティブがURIディレクトリを明示的に記述しないで指定された場合、Oracle Web Cacheは、受信リクエストに関連するサイト定義のルートに相当する暗黙的URIディレクトリを使用します。特に、サイト定義にパス接頭辞が含まれている場合、暗黙的URIディレクトリにこのパス接頭辞が含まれます。

結合された複数ディレクティブ

無効化レスポンス・ヘッダーには、URIディレクトリの後に1つ以上の検索キーを続けることもできます。その場合は、セミコロン(;)デリミタで各ディレクティブを区切ります。この場合、Oracle Web Cacheエントリはすべてのディレクティブに一致していないと無効化の対象となりません。

複数の無効化ディレクティブ

無効化レスポンス・ヘッダーに複数の無効化ディレクティブが含まれていて、連続する無効化ディレクティブのペアがそれぞれカンマで区切られている場合、Oracle Web Cacheエントリは無効化ディレクティブの少なくとも1つと一致していないと無効化の対象となりません。つまり、Oracle Web Cacheは、カンマで区切られた個々の無効化ディレクティブを独立した無効化操作として扱います。

カンマとセミコロンの混在

無効化レスポンス・ヘッダーにカンマとセミコロンの両方のセパレータが含まれている場合は、セミコロンが優先されます。したがって、セミコロンで区切られた一連のディレクティブが調べられた後に、カンマで区切られた一連のディレクティブが調べられます。

複数の無効化レスポンス・ヘッダー

オリジン・サーバーは、Oracle Web Cacheへのレスポンスに複数の無効化レスポンス・ヘッダーを格納できます。この場合、Oracle Web Cacheエントリは1つのヘッダーに一致していれば無効化の対象となります。つまり、同一レスポンス内の複数の無効化レスポンス・ヘッダーのコンテンツは、カンマで結合された1つのレスポンス・ヘッダーの一部として扱われます。

レスポンスに無効な無効化レスポンス・ヘッダーが1つでも含まれていると、その他の無効化レスポンス・ヘッダーが有効であっても、無効化は行われません。


使用方法

7.8.1 使用例

次の各項では、無効化レスポンス・ヘッダーの例を示します。

これらの例は、次のアドレスをWebサイトに持つHarry's Hardwareストア向けの架空のWebアプリケーションに基づいています。

http://www.HarrysHardware.com

このサイトでは、Harryが販売しているすべての人気商品の説明(小売価格を含む)を公開しています。Harryでは、自社のサイトをホストしているWebサーバーの前面にOracle Web Cacheを配置してオンライン顧客へのレスポンス時間を改善していますが、オンライン顧客に最新のコンテンツが表示されるようにするために、商品の説明と価格を更新するたびに関連するOracle Web Cacheエントリを無効にする必要があります。次の各例では、Harryで確認された様々なシナリオでレスポンス・ヘッダーによる無効化を使用する方法を示します。

この項の内容は次のとおりです。

7.8.1.1 基本的なURIによる無効化

Harryで特に人気のある商品はThorハンマーです。これに対応する説明ページのURIは次のとおりです。

http://www.harryshardware.com/products/tools/hammers/Thor.html

このThorハンマーを特売する場合は、Webアプリケーションで、完全に指定されたURIを含む無効化レスポンス・ヘッダーを使用して該当するWeb Cacheエントリを無効化できます。

Oracle-WebCache-Invalidate: URI="http://www.harryshardware.com/products/tools/hammers/Thor.html"

元のリクエストにホスト名(www.harryshardware.com)が明示的に指定されている場合は、パスのみのURIを含む無効化レスポンス・ヘッダーをアプリケーションで返すことができます。

Oracle-WebCache-Invalidate: URI="/products/tools/hammers/Thor.html"

7.8.1.2 ディレクトリURIによる無効化

店舗のハンマーをすべて特売する場合は、Webアプリケーションで、完全に指定されたURIディレクトリを含む無効化レスポンス・ヘッダーを使用して、ハンマーに関するすべてのWeb Cacheエントリを無効化します。

Oracle-WebCache-Invalidate: URI_DIR="http://www.harryshardware.com/products/tools/hammers/"

元のリクエストでホスト名(www.harryshardware.com)が明示的に指定されている場合は、パスのみのURIディレクトリを含む無効化レスポンス・ヘッダーを返すことができます。

Oracle-WebCache-Invalidate: URI_DIR="/products/tools/hammers/"

7.8.1.3 非同期の無効化

ここまでの例では、同期ディレクティブを指定していないために、Oracle Web Cacheがクライアントにレスポンスを返す前にデフォルトで無効化を完了していました。

第7.8.1.2項の例を非同期に進める場合、つまり、Oracle Web Cacheが無効化の完了を待ってからレスポンスを返す必要がない場合は、Webアプリケーションで次のような無効化レスポンス・ヘッダーを送信できます。

Oracle-WebCache-Invalidate: SYNCHRONOUS=OFF,
URI_DIR="http://www.harryshardware.com/products/tools/hammers/"

このレスポンス・ヘッダーには、完全に修飾されたURIディレクトリが含まれていることに注意してください。元のリクエストでホスト名(www.harryshardware.com)が明示的に指定されている場合は、パスのみのURIディレクトリを含む無効化レスポンス・ヘッダーを返すことができます。

Oracle-WebCache-Invalidate: SYNCHRONOUS=OFF, URI_DIR="/products/tools/hammers/"

7.8.1.4 明示的URIを使用した検索キーによる無効化

Harryでは、TrueSawのこぎりのうち、手引きのこぎりを除いたすべての動力のこぎり(丸のこやチェーンソーなど)の価格を下げようとしています。Webアプリケーションでは、次のような無効化レスポンス・ヘッダーを使用して、必要なエントリをすべて無効化できます。

Oracle-WebCache-Invalidate: URI_DIR="http://www.harryshardware.com/products/tools/saws/";S_KEY="PowerTool";
S_KEY="TrueSaw"

S_KEYディレクティブの追加によって、TrueSawの動力のこぎりのみが無効化されます。

無効化レスポンス・ヘッダーにセミコロンで区切った複数のディレクティブが含まれている場合は、Oracle Web Cacheエントリがすべてのディレクティブと一致していないと無効化が行われません。

この例のレスポンス・ヘッダーには、完全に修飾されたURIディレクトリが含まれていることにも注意してください。元のリクエストでホスト名(www.harryshardware.com)が明示的に指定されている場合は、パスのみのURIディレクトリを含む無効化レスポンス・ヘッダーを返すことができます。

Oracle-WebCache-Invalidate: URI_DIR="/products/tools/saws/";S_KEY="PowerTool";S_KEY="TrueSaw"

7.8.1.5 暗黙的URIを使用した検索キーによる無効化

Harryでは、大型家電製品(食器洗い機や冷蔵庫など)を販売する新たなサイトを立ち上げようとしています。このサイトの定義には、パス接頭辞/products/appliancesを使用します。表7-6に、このWebサイトのサイト定義を示します。

表7-6 Webサイトの定義

スキーム ホスト ポート番号 パス接頭辞

http

www.harryshardware.com

80

/products/appliances

http

www.harryshardware.com

80

/



最初のサイトは大型家電製品のみに関連し、2番目のサイトはHarryの店舗にあるその他すべての製品に関連しています。

さらにHarryでは、すべてのKeepCold冷蔵庫の価格を変更し、受信リクエストに対するサイト定義をHarryの家電製品サイトに関連させようとしています。このサイトのスキームはhttp、ホスト名はwww.harryshardware.com、ポート(オプション)は80、パス接頭辞は/products/appliancesです。Webアプリケーションでは、次のような無効化レスポンス・ヘッダーを使用して、必要なエントリをすべて無効化できます。

S_KEY="KeepCold";S_KEY="Refrigerators"

無効化レスポンス・ヘッダーには検索キー・ディレクティブのみが含まれ、URIディレクトリ・ディレクティブは含まれていないことに注意してください。この場合、Oracle Web Cacheは受信リクエストに関連付けられたサイト定義から暗黙的URIディレクトリを作成します。この場合の暗黙的ディレクトリは次のようになります。

http://www.harryshardware.com/products/appliances/

前述のように、複数のディレクティブがセミコロンで区切られている場合は、Oracle Web Cacheエントリがすべてのディレクティブに一致していないと無効化が行われません。

完全に修飾された明示的URIディレクトリによる無効化レスポンス・ヘッダーは、次のようになります。

Oracle-WebCache-Invalidate: URI_DIR="http://www.harryshardware.com/products/appliances/";S_KEY="KeepCold";
S_KEY="Refrigerators"

パスのみの明示的URIディレクトリによる無効化レスポンス・ヘッダーは、次のようになります。

Oracle-WebCache-Invalidate: URI_DIR="/products/appliances/";S_KEY="PowerTool";
S_KEY="TrueSaw"

7.8.1.6 複数の無効化ディレクティブ

Harryでは、ドリルとレンチの在庫リスト全体を更新しようとしています。Webアプリケーションでは、次の無効化レスポンス・ヘッダーを含んだレスポンスを使用して、必要なエントリをすべて無効化できます。

Oracle-WebCache-Invalidate: URI_DIR="http://www.harryshardware.com/products/tools/drills/",
URI_DIR="http://www.harryshardware.com/products/tools/wrenches/"

無効化レスポンス・ヘッダーにカンマで区切った連続する2つの無効化指定が含まれている場合は、Oracle Web Cacheエントリが1つの無効化指定に一致していれば無効化が行われます。

この例のレスポンス・ヘッダーには、完全に修飾されたURIディレクトリが含まれています。元のリクエストにホスト名(www.harryshardware.com)が明示的に指定されている場合は、パスのみのURIディレクトリを含む無効化レスポンス・ヘッダーをアプリケーションで返すことができます。

Oracle-WebCache-Invalidate: URI_DIR="/products/tools/drills/", URI_DIR="/products/tools/wrenches/"

7.8.1.7 カンマとセミコロンの混在

Harryでは、ThorハンマーとすべてのTrueSaw動力のこぎりを特売しようとしています。Webアプリケーションでは、次の無効化レスポンス・ヘッダーを含んだレスポンスを使用して、必要なエントリをすべて無効化できます。

Oracle-WebCache-Invalidate: URI="http://www.harryshardware.com/products/tools/hammers/Thor.html",
URI_DIR="http://www.harryshardware.com/products/tools/saws/";S_KEY="PowerTools";S_KEY="TrueSaw"

カンマとセミコロンの両方がセパレータとして使用されていることに注意してください。この例で、最初のディレクティブはThorハンマーのURIのみで構成されています。2番目のディレクティブは、のこぎりのURIディレクトリおよび、電動工具用(PowerTools)の検索キーとTrueSaw工具の検索キーという3つの無効化指定で構成されています。セミコロンはカンマよりも優先されます。

この例のレスポンス・ヘッダーには、完全に修飾されたURIと、完全に修飾されたURIディレクトリが含まれていることにも注意してください。

元のリクエストにホスト名(www.harryshardware.com)が明示的に指定されている場合は、パスのみのURIとパスのみのURIディレクトリを含む無効化レスポンス・ヘッダーをアプリケーションで返すことができます。

Oracle-WebCache-Invalidate: URI="/products/tools/hammers/Thor.html"
URI_DIR="/products/tools/saws/";S_KEY="PowerTools";S_KEY="TrueSaw"

7.8.1.8 複数の無効化レスポンス・ヘッダー

第7.8.1.6項の例に戻り、Webアプリケーションで、2つの無効化レスポンス・ヘッダーを含むレスポンスを使用して必要なエントリをすべて無効にすることもできます。

Oracle-WebCache-Invalidate: URI_DIR="http://www.harryshardware.com/products/tools/drills/"
Oracle-WebCache-Invalidate: URI_DIR="http://www.harryshardware.com/products/tools/wrenches/"

同じレスポンス内の2つの異なる無効化レスポンス・ヘッダーのディレクティブは、1つのレスポンス・ヘッダー内の別個のディレクティブとして扱われます。つまりこれらは、1つの無効化レスポンス・ヘッダー内でカンマで区切られたものとして扱われます。このレスポンス・ヘッダーには、完全に修飾されたURIディレクトリが含まれていることにも注意してください。元のリクエストにホスト名(www.harryshardware.com)が明示的に指定されている場合は、パスのみのURIディレクトリを含む無効化レスポンス・ヘッダーをアプリケーションで返すことができます。

Oracle-WebCache-Invalidate: URI_DIR="/products/tools/drills/"
Oracle-WebCache-Invalidate: URI_DIR="/products/tools/wrenches/"

7.9 検索キーによる無効化の有効化

この機能を有効化するには、次の手順を実行します。

  1. 次のように、Surrogate-Keyレスポンス・ヘッダー・フィールドを使用してHTTPレスポンスを構成します。

    Surrogate-Key: search-key=("key" "key" "key" ...)
    

    Surrogate-Keyレスポンス・ヘッダー・フィールドの詳細は、第7.6項を参照してください。

    デフォルトでは、Oracle Web Cacheは最大20個の検索キーをサポートしています。制限数を増加するには、次の手順を実行します。

    1. テキスト・エディタでwebcache.xmlファイルを開きます。

    2. SEARCHKEYOPTIONS要素内でMAXSEARCHKEYSPERDOC属性を探します。

      <GLOBALCACHINGRULES>
             <SEARCHKEYOPTIONS ENABLE="YES" MAXSEARCHKEYSPERDOC="20"/>
      
             <ERRORPAGES>
      
    3. 値を大きい値に変更します。

      次の例では、検索キーの制限を35に設定します。

      <GLOBALCACHINGRULES>
            <SEARCHKEYOPTIONS ENABLE="YES" MAXSEARCHKEYSPERDOC="35"/>
      
            <ERRORPAGES>
      
    4. webcache.xmlを保存します。

  2. 次の方法を使用して、無効化リクエストに検索キーを指定します。

    • バンド外無効化の場合

      • Oracle Web Cache Managerの「Advanced Content Invalidation」ページ(「Operations」→「Advanced Content Invalidation」)で、「Search Keys」セクションを使用します。Oracle Web Cache Managerの使用方法は、第7.7.2項を参照してください。

      • XML手動無効化リクエストにOTHER要素を指定してADVANCEDSELECTOR要素を使用し、NAME属性とVALUE属性を指定してSEARCHKEYと検索キーの値をそれぞれ使用します。第7.5.1項を参照してください。

    • ESIによるインライン無効化の場合は、OTHER要素を持つ<esi:invalidate>タグを指定してADVANCEDSELECTOR要素を使用し、NAME属性とVALUE属性を指定してSEARCHKEYと検索キーの値をそれぞれ使用します。第11.4.6項を参照してください。

    • レスポンス・ヘッダーによる無効化の場合は、S_KEYオプション・ディレクティブを指定します。第7.8項を参照してください。

7.10 セキュリティに関する考慮事項

この項では、次の項目について説明します。

7.10.1 invalidatorアカウントについて

キャッシュ内のオブジェクトを無効化するには、無効化リスニング・ポートを介してinvalidatorアカウントからHTTP POSTリクエストを送信します。

invalidatorアカウントは、無効化リクエストの送信を許可された管理者です。パスワード・セキュリティの構成の詳細は、第5.2項を参照してください。

7.10.2 無効化メッセージの伝播

Oracle Web Cacheサーバー間での無効化メッセージの伝播は、次のような配置において行われます。

  • 複数のOracle Web Cacheサーバーからなるキャッシュ・クラスタ

  • あるOracle Web Cacheサーバーが別のOracle Web Cacheサーバーのオリジン・サーバーとして動作するキャッシュ階層

7.10.2.1 キャッシュ・クラスタ内での無効化処理

キャッシュ・クラスタでは、管理者が無効化メッセージをすべてのキャッシュ・クラスタ・メンバーに伝播するか、キャッシュ・クラスタの各メンバーに個別に送信するかを選択できます。

Oracle Web Cacheが無効化メッセージを伝播すると、無効化リクエストを受信したキャッシュは、そのリクエストの無効化コーディネータとして動作します。コーディネータは無効化メッセージを他のクラスタ・メンバーに伝播します。そして、コーディネータはすべてのクラスタ・メンバーからレスポンスが返されるのを待ちます。伝播が完了すると、コーディネータは各クラスタ・メンバーのメンバー名、無効化リクエストのステータス、無効になったオブジェクトの数を示すメッセージを送信元に返します。

通信できないクラスタ・メンバーがある場合には、Oracle Web Cacheからエラー・メッセージが返され、無効化メッセージは伝播されません。

キャッシュ・クラスタのアップグレード時には、キャッシュ・クラスタ・メンバーを1つずつアップグレードします。キャッシュはリクエストに応答し続けます。ただし、その他のクラスタ・メンバーの構成のバージョンが異なるため、キャッシュは、異なるバージョンで動作しているキャッシュ・クラスタ・メンバーには無効化メッセージを転送しません。かわりに、リクエストされたオブジェクトがこのキャッシュか、構成のバージョンが同じクラスタ・メンバーによってキャッシュされない場合、Oracle Web Cacheはリクエストをオリジン・サーバーに転送します。

キャッシュ・クラスタ・メンバーが実行しているOracle Web Cacheのリリースが異なっても、オブジェクトを無効化し、無効化をその他のクラスタ・メンバーに伝播できますが、無効化メッセージは旧リリースのOracle Web Cacheで動作しているキャッシュから送信される必要があります。

キャッシュ・クラスタ・メンバーのアップグレードなど、11g リリース1(11.1.1)へのOracle Web Cacheのアップグレードの詳細は、Oracle Fusion Middlewareアップグレード・プランニング・ガイドを参照してください。

7.10.2.2 階層内での無効化

Oracle Web Cacheサーバーが階層化された構成(キャッシュ階層)をとっている場合、コンテンツが複数のサーバーでキャッシュされることもあります。

図7-2分散キャッシュ階層を示します。この例では、集中キャッシュが米国のオフィスに配置され、リモート・キャッシュが日本のオフィスに配置されています。集中キャッシュはWebアプリケーション・サーバーからコンテンツを格納し、リモート・キャッシュは集中キャッシュからコンテンツを格納します。すなわち、集中キャッシュは、日本のリモート・キャッシュに対してオリジン・サーバーとして動作します。

集中キャッシュは、リモートまたはサブスクライバOracle Web Cacheサーバーのinvalidatorアカウント名とパスワードを使用します。無効化リクエストは、無効にするオブジェクトおよびオブジェクトのサイト・ホスト名を指定します。サイト・ホスト名は、無効化リクエストの伝播元であるキャッシュのIPアドレスと比較されます。一致した場合、キャッシュは無効化リクエストを処理します。一致しなかった場合、リクエストは拒否されます。

無効化メッセージを自動伝播する場合、Oracle Web Cacheは、階層登録プロセスにおいて、集中キャッシュとリモート・キャッシュの間のページ・リクエストの中でエンコードされたinvalidatorパスワードを渡します。このHTTP通信は、ネットワーク傍受を受ける可能性が高くなります。保護されていない、セキュアでないネットワークの場合は、HTTPSポートを次のように構成してください。

  • デフォルトのHTTPポートを無効化し、かわりに集中キャッシュ用のHTTPSポートを構成します。第5.4.2項を参照してください。

  • 無効化用のデフォルトのHTTPポートを無効にし、かわりにリモート・キャッシュ用のHTTPSポートを構成します。第5.5.1項を参照してください。

コンテンツのリフレッシュのために、無効化メッセージが集中キャッシュに送信されると、一貫性を維持するために、無効化メッセージが集中キャッシュから日本のリモート・キャッシュに自動的に伝播されます。

図7-2 分散キャッシュ階層内でのコンテンツの無効化

図7-2の説明が続きます
「図7-2 分散キャッシュ階層内でのコンテンツの無効化」の説明

集中キャッシュが該当コンテンツのみを無効にするように、リモート・キャッシュは、無効化メッセージの伝播元である集中キャッシュのIPアドレスを使用して、無効化メッセージに指定されているサイト・ホスト名を確認します。一致した場合、リモート・キャッシュは無効化リクエストを処理します。一致しなかった場合、リクエストは拒否されます。集中キャッシュおよびリモート・キャッシュのサイト・ホスト名は一意になるように構成し、不一致が発生しないようにする必要があります。

キャッシュ階層の構成方法は、第10.2項を参照してください。