WebCenter Sites inCacheフレームワークでは、デフォルトでアセットのキャッシングがサポートされています。アセットのキャッシングはカスタマイズできます。
この章は、次の項で構成されています。
アセットのキャッシングは、インストール時とアップグレード時にWebCenter Sitesシステム上で有効になります。アセットのキャッシングは、inCacheフレームワーク上に構築された、メモリーをベースにしたシステムで、そのままではデータベースに影響を与えるような負荷を担うことによって、WebCenter Sitesのパフォーマンスを保護します。アセットのキャッシングにはAssetCache
コンテナという独自のコンテナが使用され、このコンテナは、他のinCacheコンポーネント(特にdependencyRepository
キャッシュとnotifier
キャッシュ)と相互に作用することによって機能します。
アセットのキャッシングについての説明を理解するには、まず第27章「inCacheフレームワーク」をよく読み、inCacheフレームワークの基本を理解するようにお薦めします。特に、ページ・キャッシングにおいて各キャッシュ・コンテナ(pageByQuery
、dependencyRepository
およびnotifier
)が相互に関連して機能する仕組みについて理解するようにしてください。pageByQuery
キャッシュはアセットのキャッシングには使用されませんが、キャッシュ・コンテナの動作状態を示す役割をしています。このコンテナの対になるAssetCache
コンテナも同じように機能します。また、アセットのキャッシングとinCacheのページ・キャッシングは、それぞれ独立して動作することにも注意してください。どちらのタイプのキャッシングも、相互に関係なく有効化または無効化できます。
この章の残りの部分では、AssetCache
コンテナ、アセットのロードと無効化に関連する機能、アセット・キャッシングとページ・キャッシングの比較、およびアセットのキャッシングをアセット・タイプによってカスタマイズする方法について説明します。
WebCenter Sitesでは、アセットのプログラム的な使用は、その属性のロードと読込みで構成されます。アセットは、WebCenter Sitesに格納されているテンプレートによってロードされるため、AssetCacheはWebCenter Sitesノードでのみ使用されます。
AssetCache
は、inCacheフレームワークのコンポーネントです。pageByQry
キャッシュと同様に、AssetCache
はinCacheフレームワーク内で各WebCenter Sitesノード下の独自のコンテナとして個別に使用できます。
AssetCache
コンテナは、各WebCenter Sitesのcs-cache.xml
ファイル内でデフォルトで有効になっており、ここでは<cache>
エレメントという名前で呼ばれています。AssetCache
コンテナは、すべてのタイプのアセットをキャッシングし、次に示すinCacheコンポーネントと相互に作用することで機能します。特定のタイプのアセットについては、追加のAssetCacheコンテナを構成できます。詳細は、第29.4項「アセットのキャッシングのタイプ」および第29.5項「アセットのキャッシングのカスタマイズ」を参照してください。
dependencyRepository
キャッシュとの相互作用
AssetCache
にアセットをロードすると、表29-1に示すように、inCacheがdependencyRepository
キャッシュ内にエントリを作成することで、そのアセットへの依存性をログ記録します。そのアセットを変更または保存すると、dependencyRepository
キャッシュから依存情報が削除されるので、AssetCache
ではこのアセットのエントリが無効になります。一般に、キャッシュされたアセットに対して保存または削除操作を実行すると、そのアセットは無効になります。
注意: アセットのキャッシングが有効になっている場合、Sites ExplorerまたはCatalogManager APIを使用してデータベース表にアセットを直接保存したり削除しないでください。この方法で保存および削除操作を実行しても、アセットのキャッシュは無効になりません。 |
notifier
キャッシュとの相互作用
どれか1つのノードで無効化が行われると、notifier
キャッシュによって他のノードに反映されます。このキャッシュは、どのアセットが変更されたかという情報を広める働きをします。受信したノードのAssetCache
にそのアセットが含まれている場合、そのノードはこの情報に従って独自のdependencyRepository
キャッシュを更新します。
アセットのキャッシングとページのキャッシングは無関係に機能しますが、表29-1に示すように、様々なキャッシュを共有しています。
表29-1 アセットとページのキャッシングで使用されるキャッシュ・コンテナ
アセットのキャッシング機能 | ページのキャッシング機能 | AssetCache コンテナ |
pageByQry コンテナ |
dependency Repository コンテナ |
notifier コンテナ |
---|---|---|---|---|---|
オフ |
オフ |
未使用 |
未使用 |
未使用 |
未使用 |
オフ |
オン |
未使用 |
ページのキャッシングで使用 |
ページのキャッシングで使用 |
ページのキャッシングで使用 |
オン |
オフ |
アセットのキャッシングで使用 |
未使用 |
アセットのキャッシングで使用 |
アセットのキャッシングで使用 |
オン |
オン |
アセットのキャッシングで使用 |
ページのキャッシングで使用 |
アセットのキャッシングとページのキャッシングで使用 |
アセットのキャッシングとページのキャッシングで使用 |
この項は、次のトピックで構成されています。
アセットのデータは、APIまたはasset:loadタグを使用する複数の方法で読み込むことができます。
次のAPIは、アセットをAssetCache
に、readonly-complete
モードでロードします。
AssetDataManager.read(AssetId)
アセットに対するREST API GET
次のタグは、アセットをAssetCache
に、様々なモードでロードします。
asset:load(objectid="cid1" option="editable")
asset:load(objectid="cid1" option="readonly")
asset:load(objectid="cid1" option="readonly-complete")
optionパラメータでは、アセットをキャッシュするかどうかと、AssetCacheおよびdependencyRepositoryでの、キャッシュされたアセットのキーの命名方法を決定します。キャッシングのシナリオを、図29-1にまとめます。シナリオDでは、AssetCacheコンテナに同じアセットの複数のエントリが存在しています。これは、アセットがreadonlyおよびread-only completeという2つのモードでロードできるためです。
次のモードでは、アセットをキャッシュするかどうかと、AssetCacheおよびdependencyRepositoryでの、キャッシュされたアセットのキーの命名方法が決定されます。このモードは、第29.3.1項「アセットのロード」にリストされているAPIやタグで定義されます。
図29-2に示すように、キャッシュされたアセットとページ、さらにそれぞれの依存性では、キーの名前が異なります。この違いを理解することは、(「管理」タブの「システム・ツール」ノードにある)キャッシュ管理ツールに表示されるキャッシング情報の解析に役立ちます。
たとえば、図29-2には、AssetCacheコンテナ内のキャッシュされたアセットのキーの名前がassettype:cid1:2であることが示されています。名前の中の最後の整数は、アセットを読み取ったときのモードを表しています(2はreadonlyモード)。同じアセットをreadonly-completeモードでロードすると、キーはassettype:cid1:3になります。アセットが複数のモードでコールされた場合、AssetCacheコンテナにはそのアセットに対する複数のエントリが確認されます(図29-1を参照)。
キャッシュされたページのキーは、pagenameで始まります。ページにはモードは適用されず、ページのキャッシュは1度しか行われません。
アセットのロードのモードの詳細は、第29.3.1項「アセットのロード」を参照してください。キャッシュ管理ツールの詳細は、第30章「システム・ツール」を参照してください。
アセットは、次のAPIやタグ経由で保存された場合、AssetCacheからフラッシュすることができます。
API
REST API PUT
AssetDataManagerWrite
JSPタグ
asset:save
asset:saveall
asset:delete
asset:deleteassettype
asset:void
asset:rollback
asset:deleterevision
asset:undocheckout
insite:edit
XMLタグ
INSITE.EDIT
ASSET.VOID
ASSET.SAVE
ASSET.SAVEALL
ASSET.DELETE
WebCenter Sitesノードでアセットのキャッシングを有効にすると、そのノードにあるcs-cache.xmlファイルには、次の<cache>エレメントのどれか1つ以上が格納されます。
デフォルトの<cache>
エレメント。すべてのタイプのアセットが、AssetCache
という名前の汎用のキャッシュ・コンテナにキャッシュされるように指定します。
<cache name="AssetCache"
diskPersistent="true" maxElementsInMemory="100"
maxElementsOnDisk="100" eternal="true" overflowToDisk="true"
diskSpoolBufferSizeMB="20" memoryStoreEvictionPolicy="LFU"
clearOnFlush="false" />
汎用のAssetCache
コンテナは、WebCenter Sitesのインストール・プロセス中に、すべてのWebCenter Sitesノードで自動的に構成されます。
カスタムの<cache>
エレメント。特定のタイプのアセットが、AssetCache
Asset_type_name
という名前の独自のコンテナにキャッシュされるように指定します。
<cache name="AssetCacheAsset_type_name"diskPersistent="true" maxElementsInMemory="100"
maxElementsOnDisk="100" eternal="true" overflowToDisk="true"
diskSpoolBufferSizeMB="20" memoryStoreEvictionPolicy="LFU"
clearOnFlush="false" />
タイプ固有のすべてのカスタムAssetCache
コンテナは、cs-cache.xml
ファイル内で手動で構成する必要があります。タイプ固有のコンテナの作成数は、独自のコンテナにキャッシュする必要のあるアセットのタイプと、各コンテナのキャッシングに適用する必要のある条件によって異なります。
汎用のAssetCacheコンテナは、1つまたは多数のタイプ固有のアセット・キャッシュと共存させることができます。または、それらによって置き換えることもできます。すべてのアセット・キャッシュのコンテンツは相互に排他的です。つまり、汎用のAssetCacheコンテナでは、タイプ固有のコンテナにキャッシュされているアセット・タイプは除外され、タイプ固有のコンテナでは、その他すべてのタイプのアセットが除外されます。
さらに、アセットのキャッシングが有効になっている場合、(「管理」タブの「システム・ツール」ノードにある)キャッシュ管理ツールには、AssetCacheコンテナのコンテンツ、dependencyRepository内の対応するエントリ、その他のタイプの情報を示すダイアログが表示されます。検索もサポートされます。
アセットのキャッシングの構成の詳細は、第29.5項「アセットのキャッシングのカスタマイズ」を参照してください。キャッシュ管理ツールの詳細は、第30章「システム・ツール」を参照してください。
次の手順は、タイプ固有のアセット・キャッシュの構成方法を示しています。
アセットのキャッシングを構成するには:
WebCenter Sitesノードでデフォルトのアセットのキャッシングが有効になっている場合は、WebCenter Sitesノードのcs-cache.xml
ファイルに次のエントリが表示されます。これは、すべてのタイプのアセットがAssetCache
という名前の汎用コンテナにキャッシュされることを指定するものです(name
以外のパラメータは表28-1で定義されています)。
<cache name="AssetCache" diskPersistent="true" maxElementsInMemory="100" maxElementsOnDisk="100" eternal="true" overflowToDisk="true" diskSpoolBufferSizeMB="20" memoryStoreEvictionPolicy="LFU" clearOnFlush="false" />
注意: 汎用のAssetCacheコンテナを、1つまたは多数のタイプ固有のアセット・キャッシュと共存させるか、あるいはそれらによって置き換えることができる場合は、次のいずれかを実行することができます。
|
独自のコンテナ内の特定のタイプのアセットをキャッシュするには、そのアセット・タイプの<cache>
エレメントを作成し、name="AssetCache
Asset_type_name
"
を設定します(カスタムの<cache>
エレメント1つに対して1つのアセット・タイプのみがサポートされます)。表28-1に示されたパラメータを使用して、キャッシュを構成します。
次に例を示します。
<cache name="AssetCacheContent_C" diskPersistent="true" maxElementsInMemory="100" maxElementsOnDisk="100" eternal="true" overflowToDisk="true" diskSpoolBufferSizeMB="20" memoryStoreEvictionPolicy="LFU" clearOnFlush="false" />
この例では、name="AssetCacheContent_C"
によってタイプ固有のAssetCache
コンテナが作成され、そこにはタイプがContent_C
のアセットのみが保持されます。汎用のAssetCache
コンテナも構成された場合、そこにはタイプがContent_C
のアセットはキャッシュされません。
アセットのキャッシングをサポートするようにinCacheフレームワークが設定されているときに、アセットのキャッシングを無効化する場合は、次の手順を実行します。
inCacheフレームワークの各WebCenter Sitesノードで、cs-cache.xml
ファイル(WEB-INF/classes/
ディレクトリにある)を開き、名前がAssetCacheで始まる<cache>
エレメントを削除します。選択した<cache>
エレメントを削除するか、すべての<cache>
エレメントを削除することができます。それぞれのエレメントはAssetCacheコンテナを表しています。AssetCacheコンテナのタイプの詳細は、第29.4項「アセットのキャッシングのタイプ」を参照してください。
アセットのキャッシングを構成する場合、キャッシュ管理ツールには、AssetCacheコンテナのコンテンツ、それに対応するdependencyRepository内のエントリ、その他の情報を示すダイアログが表示されます。検索もサポートされます。キャッシュ管理ツールの詳細は、第30章「システム・ツール」を参照してください。