ヘッダーをスキップ

Oracle Application Server アプリケーション開発者ガイド
10gリリース2(10.1.2)
B15629-01
目次
目次
索引
索引

戻る 次へ

7
アプリケーションでのOracleAS Web Cacheの構成

OracleAS Web Cacheを使用すると、アプリケーションを変更せずに、そのパフォーマンス、可用性およびスケーラビリティを向上できます。Oracle Enterprise Manager 10g Application Server Controlコンソール(Application Server Controlコンソール)というツールを使用すると、アプリケーションでキャッシュするページを指定するだけで済みます。

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

7.1 キャッシュするページの選択

次のようなオブジェクトがキャッシュの対象となります。

キャッシュされたページは、Application Server Controlコンソールの「ルール」ページ(Web Cacheホーム・ページ→「管理」タブ→「プロパティ」→「アプリケーション」→「ルール」)から管理します。ページの管理は、静的ページと動的ページの両方について行うことができます。ページをキャッシュするには、URL式を含むセレクタを指定します。キャッシング・ルールがフィルタリングされ、リクエストに対する適切なルールが検索されます。次に、セレクタに一致するURLに対して、どのような処理を行うかを指定します。正規表現を使用すると、複数のURLを一度に指定したり、特定のパターンに完全に一致するURLを指定することができます。

次の項では、サンプル・アプリケーションでの静的ページと動的ページのキャッシュ方法について説明します。

7.2 アプリケーションの分析

サンプル・アプリケーションで使用する静的ページは、スタイル・シート(blaf.css)のみです。

ユーザーに従業員IDを入力するよう要求するID入力ページ(図3-1)は、特定の期間ごとに変化しないという意味では静的ページですが、このページは動的に生成されます。ID入力ページは、キャッシュに適したページです。

アプリケーションで最も頻繁に要求されるページは、従業員情報を表示するページです。これらのページをキャッシュしておくと、アプリケーションのパフォーマンスが向上します。ただし、これらのページは動的に生成されるため、ページが有効でなくなったときにそのページを無効にする必要があります。

サンプル・アプリケーションには、キャッシュが必要なグラフィックスはありません。

7.2.1 キャッシュするページの指定

図7-1に、Application Server Controlコンソールの「ルール」ページを示します。先頭の3行がサンプル・アプリケーションに適用されます。

図7-1    Application Server Controlコンソールの「ルール」ページ


画像の説明

ルール1: ID入力ページと従業員情報を表示するページのキャッシュ

ID入力ページのURLと従業員情報を表示するページのURLは類似しています。ID入力ページのURLは、次のとおりです。

/empbft/controller?action=queryEmployee

従業員情報を表示するページのURLは、次のようになります。

/empbft/controller;jsessionid=489uhhjjhjkui348fslkj0982k3jlds3?action=queryEmployee&emp
ID=123&submit=Query+Employee

いずれのURLにもaction=queryEmployeeが含まれています。次の正規表現は、両方のURLに対応します。

^/empbft/controller.*¥?.*action=queryEmployee.*
ルール2: 最初のページのキャッシュ

2番目のルール^/empbft/$は、アプリケーションのID入力ページへのリンクを提供するオプションのリンク集ページを指定します。このページは、静的ページです。カレット(^)およびドル記号($)は、正規表現で使用する特殊文字です。それぞれ、行の先頭と末尾を示します。この表記法を使用することで、特定のパターンに完全に一致するURLを指定します。

ルール3: スタイル・シートのキャッシュ

スタイル・シートをキャッシュするには、そのスタイル・シートのURLを指定します。

^/empbft/css/blaf.css$

OracleAS Web Cacheには、インストール時にデフォルトのルールが移入されます。そのようなルールの1つである.cssは、スタイル・シート用に予約されています。このルールが現在の構成でサポートされている場合は、そのルールを構成する必要はありません。


注意

Application Server Controlコンソールで作成するキャッシング・ルールのほかに(あるいは、キャッシング・ルールのかわりに)、アプリケーション開発者は、数多くのキャッシング属性をHTTPレスポンス・メッセージのSurrogate-Controlヘッダーに保存できます。この機能を使用すると、アプリケーションのWebサーバーがApplication Server Controlコンソールの設定を無視したり、他のサード・パーティのキャッシュがOracleAS Web Cacheのキャッシング属性を使用することが可能になります。詳細は、『Oracle Application Server Web Cache管理者ガイド』を参照してください。 


7.2.2 ページの無効化

動的ページが有効でなくなったときに、キャッシュ内にあるそれらのページを無効にする必要があります。キャッシュされたページを無効にするには、無効にするページのURLが設定されたXMLファイルをOracleAS Web Cacheの無効化ポートに送信します。

アプリケーションでは、従業員情報ページをキャッシュしているため、データベース内のデータが更新されると同時に、そのページを無効にする必要があります。この操作を実行する方法の1つとして、給付項目の追加処理および削除処理の最後に、OracleAS Web Cacheに無効化メッセージを送信する方法があります。ただし、この方法では、アプリケーションで使用しているデータベース内のもとになる表が他のアプリケーションによって更新されたときには、そのページは無効になりません。

それよりもよい方法として、表のデータが変更されたときに、そのデータベースから無効化メッセージが送信されるように設定します。このように設定するには、表のデータが更新されたときに起動されるトリガーを、その表に設定します。このトリガーによって、無効化メッセージをOracleAS Web Cacheに送信するプロシージャをコールできます。

トリガーによって起動するプロシージャは、次のようになります。

-- Usage:
-- SQL> set serveroutput on (When debugging to see dbms_output.put_line's)
-- SQL> exec invalidate_emp('doliu-sun',4001,122);
--
create or replace procedure invalidate_emp (
                            machine in varchar2,
                            port in integer,
                            emp in integer) is
  DQUOTE constant varchar2(1) := chr(34);
  CR constant varchar2(1) := chr(13);
  AMP constant varchar2(1) := chr(38);
  uri varchar2(100) := '/empbft/controller?action=queryEmployee' || AMP ||
                       'amp;empID=' || emp;
BEGIN
  wxvutil.invalidate_reset;
  wxvutil.invalidate_uri(uri, 0, NULL);
  wxvutil.invalidate_exec(machine, port, 'inv-password');
END;


注意

OracleAS Web Cacheには、外部ソースのコンテンツを無効にするためのメカニズムがいくつか用意されています。また、Edge Side Include(ESI)を使用する開発者に対し、インラインの無効化メカニズムが用意されています。使用可能なインラインの無効化メカニズムの詳細は、『Oracle Application Server Web Cache管理者ガイド』を参照してください。 


7.2.3 もとになる表へのトリガーの設定

データベース内のもとになる表には、次のトリガーがあります。これらのトリガーによって無効化プロシージャが実行されます。

最初のトリガーは、EMPLOYEE_BENEFIT_ITEMS表から行が削除されたときに起動します。

CREATE OR REPLACE TRIGGER AFTER_DEL_TRIG
AFTER DELETE on employee_benefit_items
FOR EACH ROW
BEGIN
invalidate_emp('doliu-sun', 4001, :old.EMPLOYEE_ID);
END;

2番目のトリガーは、EMPLOYEE_BENEFIT_ITEMS表に行が挿入されたとき、または行が更新されたときに起動します。

CREATE OR REPLACE TRIGGER AFTER_INS_UPD_TRIG
AFTER INSERT OR UPDATE on employee_benefit_items
FOR EACH ROW
BEGIN
invalidate_emp('doliu-sun', 4001, :new.EMPLOYEE_ID);
END;

戻る 次へ
Oracle
Copyright © 2003, 2004, Oracle.

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