このトピックでは、次の情報を提供します。
Oracle Application ServerとOC4Jには、次のキャッシング機能があります。
これは、アプリケーションの外部に保持されるHTTPレベルのキャッシュで、非常に高速なキャッシュ操作を可能にします。純粋なコンテンツ・ベースのキャッシュであるため、静的データ(HTML、GIFまたはJPEGファイルなど)または動的データ(サーブレットやJSPの結果など)をキャッシュできます。このキャッシュが、アプリケーション外部にフラットなコンテンツ・ベースのキャッシュとして存在する場合は、オブジェクト(JavaオブジェクトやXML DOMオブジェクトなど)を構造化形式でキャッシュすることはできません。さらに、キャッシュ内のデータに対する後処理機能がかなり制限されます。
OracleAS Web Cacheには、Edge Side IncludesをサポートするESIプロセッサが備わっており、Webサーバーから独立して、動的にコンテンツのアセンブリができるXMLスタイルのマークアップ言語がサポートされます。このテクノロジによって、開発者は、必要に応じてキャッシュ可能なページをキャッシュ内のオブジェクトに分割できます。OC4Jでは、このテクノロジがJESIタグ・ライブラリによってサポートされています。
OracleAS Web Cacheの追加情報は、『Oracle Application Server Web Cache管理者ガイド』を参照してください。
これはアプリケーション・レベルのキャッシュで、Java Webアプリケーションに埋め込まれ、保持されます。Webベースとオブジェクト・ベースの両方を混合したキャッシュです。カスタム・タグ・ライブラリまたはAPIを使用すると、ユーザーはページ・フラグメントの境界を定義でき、JSPページやサーブレットの実行の中間結果と部分的な結果を、キャッシュ内のオブジェクトとして取得、格納、再利用、処理および管理できます。ブロックごとに独自の結果に基づいたキャッシュ・オブジェクトを作成できます。作成されるオブジェクトは、HTMLまたはXMLのテキスト・フラグメント、XML DOMオブジェクトまたはJavaのシリアライズ可能なオブジェクトなどです。これらのオブジェクトは、HTTPセマンティックと関連付けると簡単にキャッシュできます。あるいは、HTTP外部で再利用できます。たとえば、キャッシュ内のXMLオブジェクトをSimple Mail Transfer Protocol(SMTP)、Java Message Service(JMS)、アドバンスト・キューイング(AQ)またはSimple Object Access Protocol(SOAP)を介して出力する場合に再利用できます。
Oracle9i Application Server Java Object Cacheは、プロセス内、プロセス間およびローカル・ディスク上でJavaオブジェクトを管理するための汎用キャッシュです。Java Object Cacheは、取得や作成が困難でコストがかかるオブジェクトのローカル・コピーを管理することによって、サーバーのパフォーマンスを大幅に向上させます。デフォルトでは、OC4J Web Object Cacheは、Oracle9i Application Server Java Object Cacheを基礎となるキャッシュ・リポジトリとして使用します。
Webアプリケーション全体の設定におけるOC4J Web Object Cacheのロールを理解していることが重要です。このキャッシュは、Javaレベルで機能し、サーブレットとJSPアプリケーションのHTTP環境と緊密に統合されています。一方、Oracle9i Application Server Java Object Cacheは、Javaオブジェクト・レベルで機能しますが、HTTPとは統合されていません。OracleAS Web Cacheの場合は、HTTPと適切に統合され、Web Object Cacheと比べて一段と高速です。ただし、Javaレベルでは動作しません。たとえば、このキャッシュでは、スタイルシートをJ2EEコンテナにあるキャッシュ内のDOMオブジェクトに適用したり、他のプロトコルにあるキャッシュ内の結果を再利用したりすることはできません。
Web Object Cacheは、アプリケーションの主要なWebキャッシュとしては使用しません。サーブレットやJSPページを実行するJava Virtual Machine内に埋め込まれた補助的なキャッシュです。Web Object Cacheのキャッシュ結果に対する検索パスには、JVM、JSPおよびサーブレットの各エンジンが含まれているため、通常は、OracleAS Web Cacheと比べると、Web Object Cacheからのページの対応に時間がかかります。
Web Object Cacheは、OracleAS Web CacheやOracle Application Server Java Object Cacheの必要性を否定したり、排除するものではありません。あくまでもWebアプリケーションの全体的フレームワークにおける補足的なキャッシング・コンポーネントであり、必要に応じて、他のキャッシング製品とともに使用する必要があります。実際に、Web Object Cacheでは、Java Object Cacheをそのデフォルトのリポジトリとして使用しています。また、OC4J JESIタグとWeb Object Cacheタグを組み合せて使用することによって、Web Object CacheとOracleAS Web Cacheを同一ページで使用できます。
OracleAS Web Cacheは、プライマリ・キャッシング・コンポーネントと考えてください。キャッシュ内のページをHTTPクライアントに直接供給し、大量のHTTP通信量を迅速に処理でき、ほとんどのWebサイトの要件に適応しています。OracleAS Web Cacheを使用すると、Webページの全体または一部を(JESIタグを使用して)格納できます。キャッシュ内のページは、クライアントへの送信前に、ある程度カスタマイズできます。たとえば、Cookie置換やページ・フラグメントの連結などが対象となります。
OracleAS Web Cacheをできるだけ多用して、Webアプリケーション・サーバーやバックエンド・データベースへのロードを軽減することをお薦めします。大部分のWebページのキャッシング・ニーズに対しても、OracleAS Web Cacheのみで対処できます。
OracleAS Web Cacheの補完としてWeb Object Cacheを使用すると、JSPおよびサーブレットの実行の中間結果を取得し、後でこのキャッシュ結果をJavaアプリケーション・ロジックの他の部分で再利用できます。キャッシュ時とクライアントへの供給時の間にキャッシュ内のオブジェクトに対して大量の後処理を実行しない場合は、WebアプリケーションでWeb Object Cacheを使用するメリットがありません。
Web Object Cacheでは、Oracle Application Server Java Object Cacheと比べると、動的Web ページでの実行結果の一部を格納およびメンテナンスする作業がはるかに容易になります。Java Object Cacheは、一般的なJavaアプリケーションにとって純粋なオブジェクト・ベースのフレームワークであるため、どのHTTP環境でも埋込みが可能です。たとえば、このキャッシュは、HTTPのCookieまたはセッションに直接依存していません。Java Object CacheをWebアプリケーション内で直接使用する場合に必要なすべてのインタフェースは、開発者の責任で行います。Java Object Cacheには、メンテナンス・ポリシーを宣言して指定する手段が含まれていません。
OC4Jでは、JESIタグ・ライブラリを、ESIタグとWebキャッシングに関するEdge Side Includes機能への便利なインタフェースとして提供しています。開発者は、WebアプリケーションでESIタグを直接使用できますが、JESIタグは、JSP環境で使用したほうがはるかに便利です。
OC4J Web Object Cacheは、Javaで記述されたWebアプリケーションが、JSPやサーブレットなどの動的Webページが生成した部分的な結果と中間結果を取得、格納、再利用、後処理およびメンテナンスできるようにする機能です。プログラミング・インタフェースについては、タグ・ライブラリ(JSPページでの使用)とJava API(サーブレットでの使用)を備えています。