27 ページのデザインとキャッシングの理解
Webページをキャッシュすると、サイトのパフォーマンスを向上させることができます。サイトが静的か動的かに関係なく、指定されたページの一部または全体がキャッシングされるようにサイトをデザインする必要があります。
トピック:
27.1 モジュラ・ページ・デザインについて
モジュラ・ページ・デザインは、複数のエレメントで構成されています。それには、システム・パフォーマンスの向上や一般的なデザイン・エレメントの再利用など、利点がいくつかあります。
-
効率的なキャッシュ戦略を策定可能にすることで、システム・パフォーマンスを向上させます。
-
ナビゲーション・バーのような一般的なデザイン・エレメントを1回コーディングするのみで、複数のWebページで利用できます。
この図は、シンプルなモジュラ・ページを示しています。
それぞれの四角形は、生成された1つ以上のエレメントの出力を表し、これらはページレットと呼ばれます。これらのページレットは、それを含むプロジェクトによってコールされ、これらを使用して次のことが可能になります。
-
完成したページにページレットを表示する方法をレイアウトします。
-
カスタムアクセス制御リスト(ACL)チェック・コードなど、ページが表示されるたびに評価する必要があるコードを定義します。
この戦略を使用すると、エレメントを1回コーディングのみで、そのエレメントをWebサイトの様々な場所で利用できます。
27.2 キャッシングについて
WebCenter Sitesでは、Webページ全体をキャッシュしたり、それらのWebページを構成しているコンポーネントをキャッシュしたりできます。効率的なページ・キャッシング戦略を使用すると、負荷を軽減してシステム・パフォーマンスを向上させることができます。
WebCenter Sites製品ファミリの次の2つのメンバーではページ・キャッシングが実装されています。
-
WebCenter Sitesでは、WebCenter Sitesシステム上でページがキャッシュされます。
-
Satellite Serverは、WebCenter Sitesシステム用の第2レベルのキャッシングを提供し、Webページのリモート・キャッシュとしても使用できます。
WebCenter Sitesは、WebCenter SitesとSatellite Serverの両方のキャッシュを利用して、効率的なキャッシュ戦略を実現します。
27.2.1 WebCenter Sitesのキャッシング
ContentServerサーブレットへの要求によって生成されたページレットをディスク上でキャッシュできる場合、処理速度が上がります。アクセス頻度の高いページのコンテンツが少数のパラメータに依存している場合は、そのページはディスクにキャッシュする対象の有力な候補です。
ページレットをディスクにキャッシュするには、次のタグのいずれかを使用します。
表27-1 キャッシングのタグ
JSPタグ | XMLタグ |
---|---|
|
|
|
|
キャッシュしようとしているページレットがまだディスク・キャッシュ内にない場合は、ContentServerはそのページレットをキャッシュに追加してから、そのページレットを処理します。
27.2.2 BlobServerとキャッシング
BLOBという用語は、Binary Large OBjectの頭字語です。BLOBは通常はイメージ・ファイルですが、Microsoft Wordファイルやスプレッドシートを含むどのようなバイナリ・オブジェクトであってもかまいません。ほとんどのWebサイトではいくつかのBLOBが処理されます。
WebCenter Sitesには、BlobServerという特殊なサーブレットが用意されています。BlobServerは、表からBLOBを収集して、すべての関連するセキュリティ・チェックを実行します。
次に示すBlobServerのタグを使用してBlobServerにアクセスできます。
-
satellite:blob
-
render:satelliteblob
これらのタグはどちらも、WebCenter SitesとSatellite ServerのキャッシュにBLOBを格納します。『Oracle WebCenter Sitesリファレンス・タグ・リファレンス』を参照してください。
WebCenter Sitesのメモリー・キャッシュからのBLOBの削除
WebCenter Sitesのキャッシュから特定のBLOBを削除するには、BlobServerのURLを編集する必要があります。
-
blobtable
パラメータの名前をflushblobtable
に変更します -
authusername
パラメータとpassword
パラメータを通じて資格証明を渡すことで、SiteGod
権限を持つユーザーとして認証を受けます
次に例を示します。
http://hostname:port/servlet/BlobServer?blobcol=urlpicture&blobheader=image%2Fgif&blobkey=id&flushblobtable=NewPortalImage&blobwhere=22&authusername=username&authpassword=password
すべてのBLOBを削除するには、blobtable
パラメータの名前をflushblobtables
(語尾のsに注意)に変更して、これをtrue
に設定します。
27.2.3 Satellite Serverのキャッシング
Satellite Serverは、WebCenter Sitesとともに自動的にインストールされて、追加のキャッシング層を提供します。WebCenter Sitesシステムのパフォーマンスを向上させるために、リモートのSatellite Serverシステムを追加して、コンテンツの配置場所を対象ユーザーに近づけることができます。
Satellite Serverは、ページ、ページレットおよびBLOBをディスクやメモリーにキャッシュします。Inventory
サーブレットを使用すると、メモリー・キャッシュやディスク・キャッシュのコンテンツを、様々な度合いで詳細に確認できます。Satellite Server上でキャッシュされたアイテムは、WebCenter SitesのAPIによって保護されないことに注意してください。この制限に対処するには、「ページレットのキャッシュ戦略」で概述しているキャッシュ戦略を使用します。
Satellite Serverは、小さいアイテムをメモリーにキャッシュして、大きいアイテムをディスクにキャッシュします。大小の定義は、file_size
プロパティで制御します。『Oracle Fusion Middleware Oracle WebCenter Sitesプロパティ・ファイル・リファレンス』のSatellite Server JSONファイルのプロパティの管理に関する項を参照してください。
訪問者が多いサイトでは、各Satellite Serverシステムのキャッシュは、アクセス頻度の高いページによってすぐに一杯になります。キャッシュが一杯になると、Satellite Serverは古いページを削除して、新しいページ用のスペースを確保します。Satellite Serverは、最低使用頻度アルゴリズム(LRU)を使用して、キャッシュから削除するアイテムを決定します。つまり、新しいページをキャッシュする必要がある場合は、Satellite Serverは最も長い時間にわたってアクセスされていないページを削除します。
27.2.3.1 キャッシュの有効期限
Satellite Server上のページとページレットの有効期限は、SiteCatalog
表のsscacheinfo
列で指定します。ページまたはページレットがSatellite Serverを通じて呼び出されるたびに、Satellite Serverはsscacheinfoフィールドの値を処理して、そのページまたはページレットの有効期限を特定します。ページ・キャッシングの高度な手法の使用のCacheInfo文字列の構文を参照してください。
ノート:
satellite.page
タグとrender.satellitepage
タグでcachecontrol
属性を指定することで、ページレットのsscachinfo
有効期限情報をオーバーライドできます。ただし、この方法は、予期しない動作の原因となる可能性があるため、推奨されません。一部のページレットはデフォルトの方法(cachecontrol
属性なし)を介してアクセスできる場合がありますが、他のプランニング・ユニット階層はオーバーライドを使用してアクセスできる場合があります。呼び出される1つ目のメソッドは、Satellite Serverに対する有効期限を設定し、2つ目のメソッドは有効期限に影響を与えません。
Satellite Server上でキャッシュされているBLOBは、次のアルゴリズムに応じて失効します。
-
Satellite Serverのタグを使用して、BLOBごとにデフォルトの有効期限をオーバーライドできます。
-
デフォルトの有効期限をオーバーライドするためのSatelliteのタグが存在しない場合は、Satellite Serverは、
satellite.blob.cachecontrol.default
プロパティの値から有効期限を取得します。このプロパティの詳細は、「ページ・キャッシング・プロパティ」を参照してください。 -
satellite.blob.cachecontrol.default
プロパティの値が設定されていない場合は、Satellite Serverは、expiration
プロパティの値から有効期限を取得します。このプロパティについては、「Satellite Serverのプロパティ」を参照してください。
27.2.3.2 Satelliteサーブレットを使用したキャッシング
このトピックでは、SatelliteサーブレットでWebページをキャッシングする方法と、Satelliteサーブレットによるキャッシングをモジュラ・ページ・デザインと組み合せて実装して高速で効率的なWebサイトを作成する方法について説明します。
Satelliteサーブレットによるページのキャッシュ方法
Satelliteサーブレットを使用すると、ページレット・レベルのキャッシングが可能になります。Satelliteサーブレットを使用したキャッシングを実装するには、Satellite ServerのXMLタグまたはJSPタグをWebCenter Sitesページで使用して、Satelliteの特殊なURLを使用してページにアクセスします。
たとえば、Satelliteサーブレットを使用して、myPage
という名前のWebページ上にページレットレベルのキャッシングを実装したとします。この図は、このページが格納ページと3つのページレットA、BおよびCで構成されていることを示しています。格納ページとページレットAおよびBは、Satellite Serverシステム上でキャッシュされていますが、ページレットCはキャッシュされていません。
ユーザーがmyPage
を要求すると、次の処理が行われます。
-
Satellite ServerがそのURLを調べます。それがSatelliteのURLである場合は、Satelliteサーブレットは格納ページのキャッシュされたコピーを取得します。次にサーブレットは、現在自身のキャッシュ内にないページレットへのポインタを検索して、それらのページレットをWebCenter Sitesに対して要求します。したがって、この例では、Satelliteサーブレットは格納ページを取得して、ページレットAおよびBを自身のキャッシュから取得します。
-
Satelliteサーブレットが、WebCenter Sitesに対してページレットCを要求します。
-
WebCenter Sitesが、適切なXMLを解析して、ページレットCを作成してSatelliteサーブレットに送信します。
-
Satelliteサーブレットが、ページレットA、BおよびCを組み合せてページを作成して、作成したページを要求元に送信します。同時に、このサーブレットはページレットCをキャッシュします。
Satelliteサーブレットを使用したキャッシングの実装
Satelliteサーブレットを使用したページレットレベルのキャッシングを実装するには、WebCenter SitesのテンプレートにSatelliteのタグを追加します。Satellite Serverシステム上では、XML、JSPおよびJavaのコードはまったく記述しません。実際には、Satellite ServerはXMLを解析できません。
エレメント内のSatelliteタグは、Satellite Serverの一部としてインストールしたJavaコードによって解釈されます。このコードがSatellite URLを使用してコールされる場合は、このコードによって、Satelliteサーブレットがページレットをキャッシュおよび作成するために使用する情報が生成されます。Satelliteタグが含まれたエレメントを、SatelliteのURLを使用してコールしない場合は、作成されるページは、これらのSatelliteのタグがWebCenter Sitesのタグであるかのように機能します。
SatelliteのURLは、次の例のような形式になります。
http://
host:port
/servlet/Satellite?pagename=page
ここで、host
とport
は、ご使用のSatellite Serverコンピュータのホスト名とポート番号であり、page
は、要求するページの名前です。SatelliteのURLには、コール対象のページに渡す名前と値のペアを含めることもできます。
ページレットのキャッシング
この後に示しているサンプル・コードでは、render:satellitepage
タグを使用してページレットをコールしています。このページレットがSatellite Serverのキャッシュ内にない場合は、Satelliteサーブレットはそのページをロードしてキャッシュします。このページレットの処理時にエラーが発生して、このページレットを評価できない場合は、このページレットはキャッシュされません。
render:satellitepage
タグ(およびsatellite:page
タグとこれらと同等の機能を持つXMLタグ)は、このタグに渡された名前と値のペアおよびページ名に基づいてキャッシュ済ページレットを識別します。パラメータや名前と値のペアが呼出し間で異なる場合は、生成されるコンテンツが同じであっても、異なるページレットがキャッシュされます。これらのタグを通じてページレットに引数を渡すために、名前と値のペアを使用することが重要です。
ICSオブジェクト・プール、ICSリスト・プール、ページ属性コンテキストおよびセッション(セッション変数を含む)を通じて渡された値は、すべてのキャッシュ済ページレットで使用できるとはかぎりません。ネストされたページレットは、常に親と同時にコールされるとはかぎりません。さらに、セッションやコンテキストのデータに依存しているページレットは、いずれにしてもキャッシュ可能であることはまれなため、これらのページレットをキャッシュしようとすると、予期しない動作が生じる可能性があります。
render:satellitepage
タグ(およびsatellite:page
タグとこれらと同等の機能を持つXMLタグ)を通じてネストされたページレットに渡されるすべてのパラメータは、SiteCatalog内でページ基準として指定される必要があります。これにより、キャッシュ対象のページレットを作成する際に該当するパラメータが特定されます。SiteCatalogにリストされているもの以外のパラメータは使用できません(このことを示すエラーがログに書き込まれます)。
<cs:ftcs> <html> <body> <render:satellitepage pagename="My/Sample/Page" /> </body> </html> </cs:ftcs>
BLOBのキャッシング
Satelliteタグを使用したBLOBのロードとキャッシュは、Satelliteタグを使用してページレットをロードおよびキャッシュする方法と似ています。次のサンプル・コードでは、BLOBとページレットをコールすることで、前述の例を拡張しています。
<html> <body> <!-- NOTE: This will fail if list has no content (== null) --> <ics:setvar name="category" value="logo"/> <ics:setvar name="errno" VALUE="0"/> <ics:selectto from="SmokeImage" list="imagelist" where="category" limit="1"/> <ics:then> <!-- Test a blob --> <render:satelliteblob service="img src"blobtable="SmokeImage" blobkey="id" blobwhere="imagelist.id" blobcol="urlpicture" blobheader="image/gif"cachecontrol="*:30:0 */*/*"alt="imagelist.alttext" border="0" /> </ics:then> <render:satellitepage pagename="QA/Satellite/Functional/xml/"pagelet1"cachecontrol="never"/> </body> </html>
前述のコードでは、次のアクションが定義されています。
-
ics:selectto
タグは、データベースからBLOBを取得するシンプルなSQL問合せを実行します。結果は、imagelist
という名前のIList
の形式で返されます。 -
satellite:blob
タグは、データベースから取得されたBLOBをロードします。satellite.page
タグの場合と同様に、このBLOBがSatelliteのキャッシュ内にない場合は、SatelliteはこのBLOBをロードした後にキャッシュします。cachecontrol
パラメータは、このBLOBが、指定された時刻(この例では30分ごと)に失効するように設定されています。
有効期限のないBLOB
会社のロゴなど、ほとんどまたはまったく変化しないバイナリ・ファイル(BLOB)がサイト上に存在していて、Satelliteサーブレットを使用してページレット・レベルでキャッシュしている場合は、代替の方法を使用してこれらのBLOBを処理することで、パフォーマンスを向上させることができます。
有効期限のないBLOBを処理するには::
-
有効期限のないイメージをすべてのSatellite Serverホストにコピーします。これらは、Webサーバーのdocルートの下に配置します。
-
これらのイメージには、
satellite:blob
というSatelliteタグではなく、<img src="pathname">
というHTMLタグを通じてアクセスします。
たとえば、CorporateLogo.gif
という名前の、有効期限のない会社のロゴ・ファイルがあるとします。BLOBを処理するための代替方法を使用するには、まずこのファイルをすべてのSatellite Serverホスト上のWebサーバーのdocルートにコピーします。次に、satellite.blob
タグを通じてこのロゴを処理するかわりに、エレメントで単に次のようなタグを使用できます。
<img src="CorporateLogo.gif">
ノート:
このメカニズムを使用して有効期限のないイメージを処理する場合は注意してください。たとえば、いずれかのSatellite Serverホストに他のホストと同じイメージ・ファイルが保持されていない場合でも、Satellite Serverはそのことを警告できません。
http://myloadbalancer:1234/servlet/ContentServer?pagename=myPage
ページの有効期限は、expiration
プロパティによって制御されます。『Oracle Fusion Middleware Oracle WebCenter Sitesプロパティ・ファイル・リファレンス』を参照してください。
27.2.3.3 Satellite Serverキャッシュのコンテンツの表示
Inventoryサーブレットを使用すると、キャッシュに格納された様々なアイテムを表示できます。Inventoryサーブレットを呼び出すには、次のURLを使用します。
http://host:port/servlet/Inventory?username=username&password=passwordword&detail=value
これらのパラメータは、この表に定義されています。
表27-2 Inventoryサーブレットのパラメータ
パラメータ | 説明 |
---|---|
|
キャッシュを表示するSatellite Serverホストのホスト名とポート番号。 |
|
そのSatellite Serverホストにログインするために入力するユーザー名。 |
|
そのSatellite Serverホストにログインするために入力するパスワード。 |
|
Inventoryサーブレットによって表示する情報のタイプ。有効な値は次のとおりです。
|
ヘッダーには、この表に定義されている情報タイプが含まれます。
表27-3 情報タイプ
情報タイプ | 説明 |
---|---|
リモート・ホスト |
このSatellite Serverシステムが要求を転送する先となるホスト。 |
最大キャッシュ・オブジェクト数 |
キャッシュに格納できるアイテムの最大数。 |
現在のサイズ |
キャッシュに現在格納されているアイテムの数。 |
キャッシュのチェック間隔 |
失効したアイテムがキャッシュに格納されているかどうかをチェックする間隔(分単位)。 |
デフォルトのキャッシュ有効期限 |
|
最小ファイル・サイズ(バイト単位) |
この値より大きいアイテムはファイルに格納されます。この値より小さいアイテムはRAMに格納されます。 |
27.2.3.3.1 CacheManager
CacheManagerオブジェクトは、WebCenter SitesとSatellite Serverの両方のキャッシュを管理します。CacheManagerは、次の機能を実行できます。
-
ページレットをキャッシュ追跡表に記録します。
-
キャッシュ依存性アイテムをキャッシュ追跡表に記録することで、ページやページレットに含まれたコンテンツ(アセット)の記録を保持します。キャッシュ依存性アイテムとは、そのアイテムが変更されると、そのアイテムが格納されているキャッシュ内のページやページレットを無効化するアイテムのことです。キャッシュ依存性アイテムは、現在のページとすべての親ページの依存性としてログに記録されます。
-
無効なアイテムが含まれたページやページレットをWebCenter SitesとSatellite Serverのキャッシュから削除します。
-
無効なページが削除された後に、更新されたページやページレットを使用してWebCenter SitesとSatellite Serverのキャッシュを再構築します。
WebCenter Sitesでのキャッシュ管理の使用を参照してください。
27.2.3.3.2 SiteCatalog表
WebCenter Sitesの SiteCatalog
表には、WebCenter Sitesによって生成されたページとページレットが一覧表示されます。エレメントがWebCenter SitesやSatellite Serverでキャッシュされるためには、そのエレメントのエントリがSiteCatalog
表に含まれている必要があります。
SiteCatalog
表内のフィールドは、WebCenter Sitesのページのデフォルト動作(デフォルトのキャッシング動作を含む)を設定します。テンプレート・アセットの作成およびSiteEntryアセットの作成を参照してください。
27.2.3.3.3 キャッシュ・キー
WebCenter SitesやSatellite Serverのキャッシュに格納されたアイテムには、キャッシュ・キーが割り当てられます。キャッシュ・キーは、キャッシュ内の各アイテムを一意に識別します。CacheManagerは、キャッシュ・キーを使用してキャッシュ内のアイテムを検索します。WebCenter SitesとSatellite Serverは、SiteCatalog
表のpagename、resargs、pagecriteriaの各フィールドの値と他の内部データに基づいて、自動的にキャッシュ・キーを生成します。
27.2.3.3.3.1 pagecriteriaとキャッシュ・キー
ページで使用される変数をキャッシュ・キーに含めるには、SiteCatalog
表のpagecriteriaフィールドでそれらの値をカンマ区切りリストの形で指定します。たとえば、red
とblue
という値が使用されるmyPage
という名前のページがあるとします。
red
とblue
をmyPage
のキャッシュ・キーに含めるには、次のように入力します。
-
favoritecolor,second_favoritecolor
をpagecriteria列に -
favoritecolor=red&second_favoritecolor=blue
をresargsl列に
WebCenter SitesとSatellite Serverでは、キャッシュされたページに渡されたパラメータおよびpagecriteria
に基づいてキャッシュ・キーを生成します。これらのパラメータが呼出し間で異なる場合は、生成されるコンテンツが同じであっても、異なるページがキャッシュされます。次に例を示します。
http://mysatellite:1234/servlet/ContentServer?pagename=myPage&favoritecolor=red
このアドレスでは、次のアドレスとは異なるページがコールされます。
http://mysatellite:1234/servlet/ContentServer?pagename=myPage&second_favoritecolor=blue
このことは、生成されるコンテンツが同じかどうかに関係なく当てはまります。URLを通じて渡された値は、pagecriteria
で設定された値をオーバーライドします。たとえば、myPage
のpagecriteria
をred,blue
に設定した場合は、次のようになります。
-
URLを通じて
green
という値が渡された場合は、(red,blue
でなく)green,blue
がmyPage
のキャッシュ・キーに組み込まれます。 -
URLを通じて
green,violet
という値が渡された場合は、(red,blue
でなく)green,violet
がmyPage
のキャッシュ・キーに組み込まれます。 -
URLを通じて
green,violet,yellow
という値が渡された場合は、エラーが発生します。
ページにpagecriteria
が設定されていない場合は、resargsフィールドの値がキャッシュ・キーに組み込まれます。pagecriteria
の場合と同様に、URLを通じて渡された値はresargsフィールドで指定された値をオーバーライドします。
27.2.3.3.4 キャッシング・プロパティ
WebCenter SitesとSatellite Serverのデフォルトのキャッシュ設定は、wcs_properties.json
ファイルに含まれています。これらのプロパティは、プロパティ管理ツールを使用して変更できます。『Oracle Fusion Middleware Oracle WebCenter Sitesプロパティ・ファイル・リファレンス』を参照してください。
Satellite Serverの追加プロパティは、config
ディレクトリの下にあるリモートSatellite Serverのwcs_properties.json
ファイルに含まれており、手動で変更する必要があります。
27.2.3.3.5 ページ・キャッシング・プロパティ
wcs_properties.json
内の次のプロパティは、ディスク・キャッシングを制御します。
-
cs.freezeCache
: 失効したエントリをキャッシュから削除するためにキャッシュ削除スレッドを実行するかどうかを制御します。 -
cs.nocache
: ページのキャッシュ全体を無効にします。
27.2.3.3.6 Satellite Serverのプロパティ
Satellite Serverには、wcs_properties.json
ファイル内に2つのプロパティ・セットが用意されています(Oracle WebCenter Sitesプロパティ・ファイル・リファレンスを参照)。
-
wcs_properties.json
ファイル内の1つのプロパティは、Cacheの下に分類されています。satellite.blob.cachecontrol.default
:satellite.blob
タグとRENDER.SATELLITEBLOB
タグ(およびこれらと同等の機能を持つJSPタグ)のcachecontrol
パラメータのデフォルト値を指定します。 -
wcs_properties.json
ファイル内の他のプロパティは、Satelliteの下に分類されています。-
cache_folder
: Satellite Serverがページレットをディスクにキャッシュする際のキャッシュ先ディレクトリを指定します。 -
file_size
: サイズを基準にして、ディスクにキャッシュされるページレットおよびBLOBを、メモリーにキャッシュされるページレットおよびBLOBから分離します。 -
expiration
: BLOBがSatellite Serverのキャッシュ内に保持される期間のデフォルト値を設定します。 -
cache_check_interval
: キャッシュ・クリーナ・スレッドの実行間隔を制御します。これにより、失効したオブジェクトがキャッシュから削除されるタイミングを定義します。 -
cache_max
: 一度にキャッシュできるオブジェクト(ページレットとBLOB)の最大数を指定します(メモリー・キャッシュとディスク・キャッシュの両方の合計)。
-
27.3 二重バッファ・キャッシング
WebCenter SitesおよびOracle WebCenter Sites: Engageは、二重バッファ・キャッシング戦略を実装しています。このキャッシングでは、WebCenter SitesキャッシュおよびSatellite Serverキャッシュを並行して使用します。二重バッファ・キャッシュ戦略により、ページが常にキャッシュ内に保持されるようになります。
CacheManager Java APIを使用して同様のキャッシュ戦略を実装することもできます。このことが該当するのは、他のCSモジュールやCS製品を使用せずにWebCenter SitesコアおよびSatellite Serverを実行している場合のみです。CacheManager Java APIの詳細は、Oracle WebCenter Sites Java APIリファレンスを参照してください。
WebCenter SitesコアとSatellite Serverのキャッシュはどちらも、WebCenter SitesのCacheManagerオブジェクトによって管理されます。CacheManagerは、エレメントとこれらのエレメントによってコールされるアセットをキャッシュ追跡表に記録することで、コンテンツが変化するタイミングを追跡管理します。
アセットが更新およびパブリッシュされると、WebCenter SitesとSatellite Serverのキャッシュはこの図に示す順序で自動的にフラッシュおよび更新されます。
-
次の図では、コンテンツ・プロバイダは、更新されたアセットを配信システムにパブリッシュします。CacheManagerは、キャッシュ追跡表をチェックして、どのキャッシュ済アイテムがこれらの更新されたアセットの影響を受けるのかを確認します。
-
次の図では、CacheManagerは、古い
Page1
をWebCenter Sitesのキャッシュからフラッシュして、更新されたPage1
をWebCenter Sitesのキャッシュに再ロードします。Page1
が要求された場合は、Satellite Serverのキャッシュ内にある古いバージョンのPage1
がその要求元に渡されます。これにより、WebCenter Sitesコンピュータでは、キャッシュを削除して再構築する際の過剰な負荷が防止されます。 -
次の図では、CacheManagerは、古いアイテムをSatellite Serverのキャッシュからフラッシュします。訪問者がこのWebサイトにアクセスして
Page1
を要求すると、Satellite Serverは検索を実行して、Page1
が自身のキャッシュに存在するかどうかを確認します。Page1
はSatellite Serverのキャッシュ内には存在しないため、この要求はWebCenter Sitesに転送されます。 -
Satellite Serverシステムのキャッシュは、WebCenter Sitesのキャッシュから取得された更新バージョンの
Page1
で一杯になります。この更新されたページは、要求元に提供されます。Page1
が再び要求された場合は、このページはSatellite Serverのキャッシュから提供されます。
27.3.1 二重バッファ・キャッシングの実装について
Webサイトに二重バッファ・キャッシングを実装するための最初のステップは、「モジュラ・ページ・デザインについて」で説明しているように、モジュラ・ページを設計することです。モジュラ・ページ・デザインを開発したら、二重バッファ・キャッシング戦略を次の3つのステップで実装します。
-
ページレットのキャッシュ戦略を策定します。
-
SiteCatalog
表のpagecriteriaフィールドを使用して、個別のページとページレットのキャッシング方法を設定します。 -
Satelliteのタグを使用してエレメントをコーディングします。
27.3.1.1 ページレットのキャッシュ戦略
モジュラ・ページ・デザインの場合、キャッシングはページレット・レベルで行われます。キャッシュされたページレットが常にACLによって保護されるように、格納ページがキャッシュされることはありません。ページレットの更新頻度に基づいて、キャッシュ対象にするページレットを選択します。
この表では、ページレットのキャッシングに関するガイドラインを要約しています。
表27-4 ページレットのキャッシングに関するガイドライン
ページレットをキャッシュすべきケース | ページレットをキャッシュすべきでないケース |
---|---|
|
|
モジュラ・ページの例をこの図に示します。
格納ページは絶対にキャッシュしないでください。キャッシングのパフォーマンス上の利点を通常どおり得られるとともに、WebCenter Sitesによる評価を必要とするロジックをページに配置することが可能になります。また、WebCenter SitesのACLによってページを保護することも可能になります。
この例のヘッダーとフッターのページレットは、ディスクにキャッシュされる必要があります。これらはめったに更新されないため、そのことを考慮してデザインする必要があります。ヘッダーとフッターは、テンプレート内に書き込まれた静的HTMLであっても、WebCenter Sitesのディスクにキャッシュされたコンテンツであってもかまいません。
サイドバーもディスク・キャッシング対象の有力な候補です。サイドバーにはわずかなバリエーションしかなく、そのコンテンツは少数のパラメータによって決定されるからです。
本文ページレットのキャッシュ方法を決定することはさらに複雑です。本文ページレットのコンテンツは、Webサイトの訪問者がサイト内のどこにいるのかによって変化する場合があります。本文ページレットのコンテンツとしては、次の3つのタイプが考えられます。
-
Webサイトの訪問者が実行する検索の結果
-
頻繁に実行される問合せの結果
-
記事
キャッシング戦略では、次の点を検討する必要があります。
-
本文ページレットのコンテンツが、Webサイトの訪問者が入力するパラメータに基づいた検索の結果である場合は、そのコンテンツをキャッシュしないでください。このようなページは訪問者ごとに変化するため、これらをキャッシュすることの利点はほとんどありません。
-
コンテンツが訪問者によって頻繁に使用される標準問合せの結果である場合は、結果セットのキャッシングを使用してください。頻繁に実行される問合せをメモリーにキャッシュすると、パフォーマンスが向上します。結果セットのキャッシングと問合せでの作業を参照してください。
-
本文ページレットのコンテンツが記事のテキストである場合は、そのページレットをディスクにキャッシュしてください。
27.3.2 cscacheinfoの設定
SiteCatalog
表のcscacheinfoフィールドの値によって、WebCenter Sites上のページのキャッシュ方法を制御できます。
-
これらのプロパティは、Webサイト内のページごとおよびページレットごとに変更できます。たとえば、格納ページのエレメントがWebCenter Sitesでキャッシュされないようにするには、cscacheinfoの値を
false
に設定します。
cscacheinfoフィールドの詳細は、「テンプレート・アセットの作成」を参照してください。
27.3.3 キャッシングのためのコーディング
-
二重バッファ・キャッシングを実装するには、Satellite Serverのタグを使用してエレメントをコーディングします。WebCenter SitesとSatellite Serverのみを実行している場合は、『Oracle WebCenter Sitesリファレンス・タグ・リファレンス』のSatellite Serverに関する項に記載されているSatelliteタグを使用してください。
自動キャッシュ・メンテナンスが機能するためには、アセットがキャッシュ追跡表に記録される必要があります。ASSET.LOAD
タグを使用してアセットをロードする場合は、そのアセットは自動的にキャッシュ追跡表に記録されます。ASSET.LOAD
タグが使用されないセクションについては、RENDER.LOGDEP
タグを使用してコンテンツをキャッシュ追跡表に記録してください。
ノート:
キャッシュの依存関係がログに記録されるのは、ページまたはページレットがWebCenter Sites上でキャッシュされている場合のみです。あるページが、WebCenter SitesではキャッシュされていないがSatellite Serverではキャッシュされている場合は、そのページのコンテンツが更新されたときに、そのページはキャッシュから自動的にフラッシュされません。
27.3.4 キャッシングとセキュリティ
キャッシュされるページレットについては、サイトを設計してキャッシュ戦略を策定する際に、セキュリティに関して特別な考慮が必要となります。次の各項では、WebCenter SitesとSatellite Serverでキャッシュされるページのセキュリティ考慮事項を概述しています。
27.3.4.1 WebCenter Sitesのセキュリティ
WebCenter Sitesでディスクにキャッシュされるページレットは、WebCenter SitesのACLによって制約されるため、これらのACLを使用してページへの不正なアクセスを防止できます。
ただし注意点として、WebCenter Sitesは格納ページのACLをチェックしますが、格納ページによってコールされるページレットのACLはチェックしません。たとえば、Open
、Secret
、TopSecret
の3つのACLをサイトで使用しているとします。格納ページはOpen
ACLのメンバーが表示できますが、格納ページによってコールされるページレットは、Secret
ACLとTopSecret
ACLのメンバーのみが表示できるようにする必要があります。WebCenter Sitesでは、訪問者の格納ページのACLのみがチェックされるため、Open
ACLのメンバーである訪問者は、Secret
ACLとTopSecret
ACLのメンバー向けのコンテンツを表示できます。
関連するACLがすべてチェックされるようにするには::
27.3.4.2 Satellite Serverのセキュリティ
Satellite Server上でキャッシュされるページレットは、次の場合にのみWebCenter SitesのACLによって制約されます。
-
WebCenter Sitesのキャッシュから取得された場合。
-
ページ要求に応えるために、WebCenter Sitesによって生成される必要がある場合。
ページレットがSatellite Serverのキャッシュから提供される場合は、そのページレットはWebCenter SitesのACLによって保護されなくなります。
Satellite Serverページのコンテンツのセキュリティを確保するには、格納ページをいっさいキャッシュせずに、キャッシュされないコンテナにACLチェック・メカニズムを必ず組み込んでください。
エレメントがSatelliteのタグを使用してコーディングされているが、Satellite Serverをまだインストールしていない場合は、「WebCenter Sitesのセキュリティ」で概述されているページ・デザイン考慮事項が当てはまります。ただし、Satellite Serverをインストールしたら、WebCenter Sitesは、格納ページからコールされるキャッシュ対象外ページレットのACLをチェックします。Satellite Server上でキャッシュされるページレットのACLはチェックされません。