Oracle Application Server アプリケーション開発者ガイド 10gリリース2(10.1.2) B15629-01 |
|
OracleAS Web Cacheを使用すると、アプリケーションを変更せずに、そのパフォーマンス、可用性およびスケーラビリティを向上できます。Oracle Enterprise Manager 10g Application Server Controlコンソール(Application Server Controlコンソール)というツールを使用すると、アプリケーションでキャッシュするページを指定するだけで済みます。
この章の項目は次のとおりです。
次のようなオブジェクトがキャッシュの対象となります。
キャッシュされたページは、Application Server Controlコンソールの「ルール」ページ(Web Cacheホーム・ページ→「管理」タブ→「プロパティ」→「アプリケーション」→「ルール」)から管理します。ページの管理は、静的ページと動的ページの両方について行うことができます。ページをキャッシュするには、URL式を含むセレクタを指定します。キャッシング・ルールがフィルタリングされ、リクエストに対する適切なルールが検索されます。次に、セレクタに一致するURLに対して、どのような処理を行うかを指定します。正規表現を使用すると、複数のURLを一度に指定したり、特定のパターンに完全に一致するURLを指定することができます。
次の項では、サンプル・アプリケーションでの静的ページと動的ページのキャッシュ方法について説明します。
サンプル・アプリケーションで使用する静的ページは、スタイル・シート(blaf.css
)のみです。
ユーザーに従業員IDを入力するよう要求するID入力ページ(図3-1)は、特定の期間ごとに変化しないという意味では静的ページですが、このページは動的に生成されます。ID入力ページは、キャッシュに適したページです。
アプリケーションで最も頻繁に要求されるページは、従業員情報を表示するページです。これらのページをキャッシュしておくと、アプリケーションのパフォーマンスが向上します。ただし、これらのページは動的に生成されるため、ページが有効でなくなったときにそのページを無効にする必要があります。
サンプル・アプリケーションには、キャッシュが必要なグラフィックスはありません。
図7-1に、Application Server Controlコンソールの「ルール」ページを示します。先頭の3行がサンプル・アプリケーションに適用されます。
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番目のルール^/empbft/$
は、アプリケーションのID入力ページへのリンクを提供するオプションのリンク集ページを指定します。このページは、静的ページです。カレット(^)およびドル記号($)は、正規表現で使用する特殊文字です。それぞれ、行の先頭と末尾を示します。この表記法を使用することで、特定のパターンに完全に一致するURLを指定します。
スタイル・シートをキャッシュするには、そのスタイル・シートのURLを指定します。
^/empbft/css/blaf.css$
OracleAS Web Cacheには、インストール時にデフォルトのルールが移入されます。そのようなルールの1つである.css
は、スタイル・シート用に予約されています。このルールが現在の構成でサポートされている場合は、そのルールを構成する必要はありません。
動的ページが有効でなくなったときに、キャッシュ内にあるそれらのページを無効にする必要があります。キャッシュされたページを無効にするには、無効にするページの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;
データベース内のもとになる表には、次のトリガーがあります。これらのトリガーによって無効化プロシージャが実行されます。
最初のトリガーは、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;
|
Copyright © 2003, 2004, Oracle. All Rights Reserved. |
|