Last-Modified
検証方式を使用した 2 番目のリクエスト 番目のリクエスト 番目のリクエスト 番目のリクエスト
検証方式を使用した 検証方式を使用した
検証方式を使用した 2 番目のリクエスト 番目のリクエスト 番目のリクエスト 番目のリクエスト
mod_plsqlに対して検証方式を使用すると、同じPL/SQLプロシージャに対する2番目の リクエストがクライアントのブラウザによって行われます。
図8-2では、検証方式を使用した2つめのリクエストを図示しています。
1. mod_plsqlは、リクエストに対してキャッシュされたコンテンツがあるかどうかを検 出します。
2. mod_plsqlは、同じタグおよびキャッシング・レベル情報(最初のリクエストからの)
を、CGI環境変数の一部としてPL/SQLプロシージャに送信します。
3. PL/SQLプロシージャはこれらのキャッシングCGI環境変数を使用して、コンテンツが
変更されているかどうかを確認します。 PL/SQL Web Toolkitからの次のowa_cache ファンクションを呼び出して、これを行います。
owa_cache.get_etag;
owa_cache.get_level;
これらのowaファンクションは、タグおよびキャッシング・レベルを取得します。
Oracle データベース
PL/SQL Web Toolkit Oracle9iAS Application
Server
Oracle HTTP Server
ファイル・
システム ブラウザ
ブラウザ
ブラウザ
ブラウザでの ユーザー・レベルの
キャッシング
7
1 6
5 アプリケーション
mod_plsql 2
3 4
PL/SQL Webアプリケーションでのキャッシングの使用
5. この情報に基づいて、コンテンツの再生成が必要か、またはキャッシュから使用可能か を決定します。
a. コンテンツがまだ同じであれば、プロシージャはowa_cache.set_not_
modifiedプロシージャを呼び出し、コンテンツを生成しません。これにより、
mod_plsqlはキャッシュされたコンテンツを使用します。このキャッシュされた コンテンツはブラウザに直接ストリーム・バックされます。
b. コンテンツが変更されている場合、新しいタグおよびキャッシング・レベルととも に新しいコンテンツを生成します。mod_plsqlは古いキャッシュのコピーを新し いものと置き換え、タグおよびキャッシング・レベル情報を更新します。新しく生 成されたコンテンツはブラウザに直接ストリーム・バックされます。
図 図 図
図 8-2 検証方式検証方式検証方式検証方式-2番目のリクエスト番目のリクエスト番目のリクエスト番目のリクエスト
Oracle9iAS Application Server
Oracle HTTP Server
ファイル・
システム ブラウザ
ブラウザ
Oracle データベース
mod_plsql
ブラウザ
ブラウザでの ユーザー・レベルの
キャッシング
2 4
2 5a
1 3
PL/SQL Web Toolkit
アプリケーション
5b
PL/SQL Webアプリケーションでのキャッシングの使用
期限方式の使用 期限方式の使用 期限方式の使用 期限方式の使用
検証モデルでは、mod_plsqlは、キャッシュからコンテンツに提供できるかどうかを常に
PL/SQLプロシージャに確認します。期限モデルでは、プロシージャはコンテンツの有効期
限を事前に設定します。そのため、mod_plsqlは、プロシージャに確認することなく キャッシュからコンテンツに提供します。この機能により、データベースとの通信の必要が なくなるため、パフォーマンスが大幅に向上します。
このキャッシング方式では、最良のパフォーマンスを提供します。 PL/SQLアプリケーショ ンにおいて古いコンテンツの使用が問題にならない場合に使用します。この一例は、ニュー スを日ごとに生成するアプリケーションです。ニュースは24時間有効に設定できます。 24時 間以内には、キャッシュされたコンテンツはアプリケーションに確認せずに戻されます。こ れは、根本的にファイルへのサービスと同じです。 24時間後には、mod_plsqlは再び新し いコンテンツをアプリケーションから取得します。
キャッシングに期限モデルを使用すること以外、検証モデルで説明したシナリオと同じであ ると仮定します。
図8-3では、mod_plsqlに対する期限方式の使用について図示しています。
1. Oracle HTTP ServerはPL/SQLサーバー・ページのリクエストをクライアント・サー
バーから受信します。 Oracle HTTP Serverは、そのリクエストをmod_plsqlにルー ティングします。
2. リクエストはmod_plsqlによってOracleデータベースに転送されます。
3. mod_plsqlはアプリケーションでPL/SQLプロシージャを呼び出し、通常のCommon
Gateway Interface(CGI)環境変数をアプリケーションに渡します。
4. PL/SQLプロシージャはコンテンツを送り戻すために生成します。 PL/SQLプロシー
ジャが生成されたコンテンツをキャッシュ可能であると判断した場合、PL/SQL Web
Toolkitからowa_cacheを呼び出して、有効期限およびキャッシュ・レベルを設定しま
す。
owa_cache.set_expires(p_expires, p_level);
表表
表表 8-4 期限モデル・パラメータ期限モデル・パラメータ期限モデル・パラメータ期限モデル・パラメータ パラメータ
パラメータ パラメータ
パラメータ 説明説明説明説明 set_expires
プロシージャ
期限キャッシングを使用していることをmod_plsqlに通知する ためのヘッダーを設定する。その後mod_plsqlは、有効期限お よびキャッシング・レベル情報とともにコンテンツをファイル・
システムにキャッシュする。
p_expires コンテンツが有効な時間数(分)。
PL/SQL Webアプリケーションでのキャッシングの使用
5. HTMLはmod_plsqlに戻されます。
6. mod_plsqlは、次のリクエストに備えてキャッシュ可能なコンテンツをファイル・シ ステムに保存します。
7. Oracle HTTP Serverはクライアントのブラウザにレスポンスを送信します。
図図
図図 8-3 期限方式期限方式期限方式期限方式