29 WebCenter Sitesでのキャッシュ管理の使用

サイトのすべてのコンポーネントが連携するようにするには、レンダリング・エンジン・キャッシュを正しく構成する必要があります。ここでは、キャッシングの重要な概念(レンダリング・エンジン・キャッシュとそのコンポーネントなど)について学習します。また、基盤となるコンテンツの変更が原因で古くなったオブジェクトのすべてのキャッシュ(ContentServer、BlobServerおよびSatellite Serverのキャッシュ)をCacheManagerでクリアできるキャッシュ構成プロパティについても学習します。

トピック:

WebCenter Sitesのレンダリング・エンジン・キャッシュについて

WebCenter Sitesのレンダリング・エンジン・キャッシュは2層構造のキャッシュです。第1層はContentServerとBlobServerで構成されています。また、第2層はSatellite Serverで構成されています。

各コンポーネントは独立した構成が可能で、キャッシュ・サイズ、キャッシュ・タイムアウトおよび依存性管理の動作を最適化するように微調整できます。

コンポーネントが適切に構成されている場合、WebCenter Sitesは、キャッシュされていないコンテンツをユーザーに表示することを、ほぼ常時、効果的に防ぐことが可能です。ただし、これらのコンポーネントの構成が適切でない場合は、WebCenter Sitesの動作はわかりにくく予期しないものになる可能性があります。キャッシングが不適切だとパフォーマンスが低下し、キャッシュ・インベントリが不適切に連係されると、無効なコンテンツがレンダリングされる場合があります。これに対処するため、WebCenter SitesにはCacheManagerと呼ばれるモジュールが組み込まれており、これにより、システム全体にかわって、キャッシュを有効に管理できます。

CacheManagerについて

CacheManagerでは、レンダリング・エンジンによりキャッシュされるオブジェクトに対し、構成依存関係の存在を記録できます。たとえば、ページレットがアセットをレンダリングすると、そのアセットはそのページで構成依存関係になります。アセットが変化した場合、ページは無効になり、キャッシュからフラッシュする必要があります。

CacheManagerを利用してキャッシュをフラッシュするには、レンダリング・エンジンのキャッシュ・オブジェクトのライフサイクルに対する完全制御をCacheManagerに譲る必要があります。それには、オブジェクトがキャッシュから失効しないように指定します。基となるコンテンツ(つまり、各オブジェクトに対して記録されている構成依存関係のいずれか)の変更によりオブジェクトが古くなったとCacheManagerにより判断された場合、それらのオブジェクトはキャッシュから削除されます。

ノート:

有効期限を無期限に指定すると、キャッシュされたすべてのオブジェクトと、オブジェクトに対してどの依存関係が記録されているかについて、CacheManagerがレコードに残します。このレコードはWebCenter Sitesに格納されており、第1層にキャッシュされたオブジェクトとリンクしています。このレコードにより、第2層のキャッシュのオブジェクトの有無をCacheManagerが推測して、第2層のキャッシュからオブジェクトをフラッシュできるようになります。

オブジェクトがキャッシュから失効するようになっていると、レコードが削除され、第2層のキャッシュからオブジェクトを適切にフラッシュするために必要となる情報が、CacheManagerに伝わらないままになります。

CacheManagerの機能の有効化は、ほぼ完全に自動で行われます。

  • デフォルトでは、キャッシュはオブジェクトが失効しないよう構成されています。

  • 構成依存性は、下位層のBLOBおよびページ・キャッシュに対して記録されます。<asset:load><render:sateliteblob>などのタグを使用すると、構成依存性が自動的に記録される(詳細なリストについては、『Oracle WebCenter Sitesリファレンス・タグ・リファレンス』を参照)のに対し、<portal:logdep><render:logdep>という2つのタグを使用すると、構成依存性が明示的に記録されます。

  • アセットが変更またはパブリッシュされた場合は、WebCenter SitesによりCacheManagerが自動的に起動され、キャッシュから古いコンテンツを消去し、パブリッシュの場合は、第2層のキャッシュをフラッシュする前にバックグラウンドで新しいコンテンツをあらかじめキャッシュするように、WebCenter SitesからCacheManagerに指示されます。

サイトの訪問者は、キャッシュされているコンテンツのみを表示する場合に、最高のキャッシュ・パフォーマンスを得られます。

CacheManagerの有効化

ここでは、ページ・キャッシュおよびBlobServerのBLOBキャッシュを規制する第1層のプロパティと、Satellite Serverのページ・キャッシュおよびBLOBキャッシュを処理する第2層のプロパティについて学習します。

次の各項では、第1層および第2層のキャッシュ構成プロパティと、CacheManagerを有効化するためにそれらのプロパティをどのように設定する必要があるかについて説明します。

第1層のキャッシュ構成プロパティ

この項に記載する表では、ページ・キャッシュおよびBlobServerのBLOBキャッシュを調整するプロパティについて説明します。

『Oracle Fusion Middleware Oracle WebCenter Sitesプロパティ・ファイル・リファレンス』を参照してください。

次の表では、ページ・キャッシュ・プロパティを説明します。

表29-1 WebCenter Sitesのページ・キャッシュ・プロパティ

プロパティ 説明

cs.IItemList

このプロパティでは、IItemListインタフェースを実装するクラスを指定します。

無効な値を設定するとCacheManagerは無効になります。

次の表では、BlobServerのキャッシュ・プロパティを説明します。

表29-2 BlobServerのキャッシュ・プロパティ

プロパティ 説明

bs.bCacheTimeout

このプロパティでは、BlobServerによりキャッシュにBLOBが保持される秒数を指定します。

bs.bCacheSize

このプロパティでは、BlobServerのキャッシュに格納するBLOBの個数を指定します。CacheManagerには影響しません。

cs.recordBlobInventory

このプロパティでは、BLOBに対して構成依存関係を記録するかどうかを指定します。

このプロパティは、CacheManagerでBLOBを操作するように、true(デフォルト)に設定する必要があります。

bs.security

このプロパティでは、BlobServerのセキュリティ機能を制御します。

BlobServerのセキュリティが有効な場合は、キャッシングが無効になります。したがって、BlobServerのセキュリティは、CacheManagerのインテリジェント・キャッシュ管理機能とは両立しません。

デフォルトでは、このセキュリティのレベルは無効です。

第2層のキャッシュ構成プロパティ

第2層のキャッシュ構成プロパティは、Satellite Serverのページ・キャッシュとBLOBキャッシュの両方を扱います。

第2層のプロパティは、CacheManagerの正常動作に一切影響しません。ただし、CacheManagerが正常に動作しなくなった場合には、重要な診断支援機能を果します。第2層のキャッシュ・プロパティのタイムアウト値および構成値は、予期しない動作のトラブルシューティングにとって重要です。

通常の場合、オブジェクトが第2層のキャッシュにはキャッシュされているのに、第1層のキャッシュにはキャッシュされていないと、依存アセットの保存またはパブリッシュ時に、オブジェクトが有効にフラッシュされないため、予期しない動作が起こります。構成の詳細は、『Oracle WebCenter Sitesプロパティ・ファイル・リファレンス』を参照してください。

予期しない動作は、キャッシュされたオブジェクトに対して構成依存関係が記録されていない場合にも起こります。その場合、キャッシュ上の該当オブジェクトに対するあらゆる有効な管理ができなくなります。構成依存関係を自動的に記録するタグ、また:logdepタグのいずれかを使用して明示的な記録と組み合せて使用する必要のあるタグの詳細は、『Oracle WebCenter Sitesリファレンス・タグ・リファレンス』を参照してください。

ノート:

ページまたはBLOB上の余分な構成依存関係を記録しないでください。これにより、キャッシュの不必要なフラッシュが発生し、特定の状況で、パブリッシュ中にパフォーマンスの深刻な問題を引き起こす可能性があります。不明な構成依存関係を記録する場合は特に注意してください。テンプレートおよびCSElementのエレメントのコーディングを参照してください。