ヘッダーをスキップ
Oracle® Fusion Middleware WebCenter Sites開発者ガイド
11gリリース1 (11.1.1.8.0)
E49681-03
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

5 ページのデザインとキャッシング

この章では、WebCenter Sitesのキャッシングの仕組みについて説明します。Webページをキャッシュすると、サイトのパフォーマンスを向上させることができます。サイトが静的か動的かに関係なく、指定されたページの一部または全体がキャッシュされるようにサイトをデザインする必要があります。

この章には次の項が含まれます。

5.1 モジュラ・ページ・デザイン

Webページのデザインには、モジュラ・ページ・デザイン戦略をとることをお薦めします。モジュラ・ページ・デザイン戦略とは、Webサイトの訪問者に表示される各Webページが複数のエレメントで構成されるというものです。モジュラ・ページ・デザインには次のようないくつかの利点があります。

次の図では、シンプルなモジュラ・ページを示しています。

図5-1 モジュラ・ページ

図5-1の説明が続きます
「図5-1 モジュラ・ページ」の説明

それぞれの四角形は、1つ以上のエレメントの出力として生成されたページレットを表しています。これらのページレットは、格納ページによってコールされます。格納ページは、完成ページ上でこれらのページレットがどのように表示されるかというレイアウトを決定し、その格納ページが表示されるたびに評価される必要のあるコードを含んでいます(カスタムのACLチェック・コードなど)。この戦略を使用すると、エレメントを1回コーディングのみで、そのエレメントをWebサイトの様々な場所で利用できます。

5.2 キャッシング

WebCenter Sitesでは、Webページ全体をキャッシュしたり、それらのWebページを構成しているコンポーネントをキャッシュしたりできます。効率的なページ・キャッシング戦略を使用すると、負荷を軽減してシステム・パフォーマンスを向上させることができます。

WebCenter Sites製品ファミリの次の2つのメンバーではページ・キャッシングが実装されています。

WebCenter Sitesは、WebCenter SitesとSatellite Serverの両方のキャッシュを利用して、効率的なキャッシュ戦略を実現します。

5.2.1 WebCenter Sitesのキャッシング

ContentServerサーブレットへの要求によって生成されたページレットは、ディスク上でキャッシュできます。アクセス頻度の高いページのコンテンツが少数のパラメータに依存している場合は、そのページはディスクにキャッシュする対象の有力な候補です。

ページレットをディスクにキャッシュするには、次のタグのいずれかを使用します。

表5-1 キャッシングのタグ

JSPタグ XMLタグ

satellite:page

SATELLITE.PAGE

render:satellitepage

RENDER.SATELLITEPAGE


キャッシュしようとしているページレットがまだディスク・キャッシュ内にない場合は、ContentServerはそのページレットをキャッシュに追加してから、そのページレットを処理します。指定されたページレットがすでにディスク・キャッシュ内にある場合は、ContentServerは単にそのページレットを処理します。

ディスクにキャッシュされたページレットの有効期限は時間ベースであり、futuretense.iniファイル内のプロパティと、SiteCatalog表のcscacheinfo列とsscacheinfo列で設定された値によって制御されます(cscacheinfoはWebCenter Sitesサーブレットに対応し、sscacheinfoはSatellite Serverサーブレットに対応します)。キャッシュ済ページが要求されると、その有効期限(キャッシュ・タイムアウト)がSystemPageCache表のetime列に格納されます。WebCenter Sitesサーブレットを通じて要求されたキャッシュ済ページの有効期限は、cscachinfoの値に基づいて計算され、Satellite Serverサーブレットを通じて要求されたキャッシュ済ページの有効期限は、sscacheinfoの値に基づいて計算されます。キャッシュ内のアイテムは、キャッシュされていないページと同じセキュリティ・ルールの制約を受けます。WebCenter SitesのACLは、エレメントに対して適用されるのとまったく同じように、キャッシュされたページレットにも適用されます。

5.2.2 BlobServerとキャッシング

BLOBという用語は、Binary Large OBject(バイナリ・ラージ・オブジェクト)の頭字語です。BLOBは通常はイメージ・ファイルですが、Microsoft Wordファイルやスプレッドシートを含むどのようなバイナリ・オブジェクトであってもかまいません。ほとんどのWebサイトではいくつかのBLOBが処理されます。

BLOBを処理するために、WebCenter Sitesには、BlobServerという特殊なサーブレットが用意されています。BlobServerは、表からBLOBを収集して、すべての関連するセキュリティ・チェックを実行します。

BlobServerにアクセスするには、次に示すBlobServerのタグを使用します。

  • satellite:blob

  • render:satelliteblob

これらのタグはどちらも、WebCenter SitesとSatellite ServerのキャッシュにBLOBを格納します。BlobServerのタグの詳細は、Oracle Fusion Middleware 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に設定します。

5.2.3 Satellite Serverのキャッシング

Satellite Serverは、WebCenter Sitesとともに自動的にインストールされて、追加のキャッシング層を提供します。WebCenter Sitesシステムのパフォーマンスを向上させるために、リモートのSatellite Serverシステムを追加して、コンテンツの配置場所を対象ユーザーに近づけることができます。

Satellite Serverは、ページ、ページレットおよびBLOBをディスクやメモリーにキャッシュします。Inventoryサーブレットを使用すると、メモリー・キャッシュやディスク・キャッシュのコンテンツを、様々な度合いで詳細に確認できます。Satellite Server上でキャッシュされたアイテムは、WebCenter SitesのAPIによって保護されないことに注意してください。この制限に対処するには、第5.4.1.1項「ページレットのキャッシュ戦略」で概述しているキャッシュ戦略を使用します。

Satellite Serverは、小さいアイテムをメモリーにキャッシュして、大きいアイテムをディスクにキャッシュします。大小の定義は、file_sizeプロパティで制御します。Satellite Serverのプロパティの設定の詳細は、『Oracle Fusion Middleware WebCenter Sitesプロパティ・ファイル・リファレンス』を参照してください。

訪問者が多いサイトでは、各Satellite Serverシステムのキャッシュは、アクセス頻度の高いページによってすぐに一杯になります。キャッシュが一杯になると、Satellite Serverは古いページを削除して、新しいページ用のスペースを確保します。Satellite Serverは、最低使用頻度アルゴリズム(LRU)を使用して、キャッシュから削除するアイテムを決定します。つまり、新しいページをキャッシュする必要がある場合は、Satellite Serverは最も長い時間にわたってアクセスされていないページを削除します。たとえば、キャッシュ内に、36時間アクセスされていないページと2時間アクセスされていないページの2つがあるとします。この場合、Satellite Serverは36時間アクセスされていないページを削除します。

5.2.3.1 キャッシュの有効期限

Satellite Server上のページとページレットの有効期限は、SiteCatalog表のsscacheinfo列で指定します。ページまたはページレットがSatellite Serverを通じて呼び出されるたびに、Satellite Serverはsscacheinfoフィールドの値を処理して、そのページまたはページレットの有効期限を特定します。sscacheinfoフィールドの詳細は、第7章「ページ・キャッシングの高度な手法」第7.4項「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プロパティの値から有効期限を取得します。このプロパティについては、第5.3.4.1項「WebCenter Sitesページのキャッシングのプロパティ」を参照してください。

  • satellite.blob.cachecontrol.defaultプロパティの値が設定されていない場合は、Satellite Serverは、expirationプロパティの値から有効期限を取得します。このプロパティについては、第5.3.4.2項「Satellite Serverのプロパティ」を参照してください。

5.2.3.2 Satelliteサーブレットを使用したキャッシング

次の各項では、SatelliteサーブレットによるWebページのキャッシュ方法と、サイトでSatellite Serverのキャッシングを実装する方法を説明しています。Satelliteサーブレットによるキャッシングをモジュラ・ページ・デザインと組み合せて使用すると、高速で効率的なWebサイトを作成できます。

Satelliteサーブレットによるページのキャッシュ方法

Satelliteサーブレットを使用すると、ページレット・レベルのキャッシングが可能になります。Satelliteサーブレットを使用したキャッシングを実装するには、Satellite ServerのXMLタグまたはJSPタグをWebCenter Sitesページで使用して、Satelliteの特殊なURLを使用してページにアクセスします。

たとえば、Satelliteサーブレットを使用して、myPageという名前のWebページ上にページレットレベルのキャッシングを実装したとします。図5-2で示すように、このページは、格納ページと3つのページレットA、BおよびCで構成されています。格納ページとページレットAおよびBは、Satellite Serverシステム上ですでにキャッシュされていますが、ページレットCはキャッシュされていません。

図5-2 myPageという名前のWebページ

図5-2の説明が続きます
「図5-2 myPageという名前のWebページ」の説明

ユーザーがmyPageを要求すると、次の手順が実行されます。

  1. Satellite ServerがそのURLを調べます。それがSatelliteのURLである場合は、Satelliteサーブレットは格納ページのキャッシュされたコピーを取得します。次にサーブレットは、現在自身のキャッシュ内にないページレットへのポインタを検索して、それらのページレットをWebCenter Sitesに対して要求します。したがって、この例では、Satelliteサーブレットは格納ページを取得して、ページレットAおよびBを自身のキャッシュから取得します。

  2. Satelliteサーブレットが、WebCenter Sitesに対してページレットCを要求します。

  3. WebCenter Sitesが、適切なXMLを解析して、ページレットCを作成してSatelliteサーブレットに送信します。

  4. 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_name:port/servlet/Satellite?pagename=page

ここで、host_nameportは、ご使用のSatellite Serverコンピュータのホスト名とポート番号であり、pageは、要求するページの名前です。SatelliteのURLには、コール対象のページに渡す名前と値のペアを含めることもできます。

ページレットのキャッシング

この後に示しているサンプル・コードでは、render:satellitepageタグを使用してページレットをコールしています。このページレットがSatellite Serverのキャッシュ内にまだない場合は、Satelliteサーブレットはそのページをロードしてキャッシュします。このページレットの処理時にエラーが発生して、このページレットを評価できない場合は、このページレットはキャッシュされません。

render:satellitepageタグ(およびsatellite:pageタグとこれらと同等の機能を持つXMLタグ)は、このタグに渡された名前と値のペアおよびページ名に基づいてキャッシュ済ページレットを識別します。パラメータや名前と値のペアが呼出し間で異なる場合は、生成されるコンテンツが同じであっても、異なるページレットがキャッシュされます。これらのタグを通じてページレットに引数を渡すために、名前と値のペアを使用することが重要です。

ICSオブジェクト・プール、ICSリスト・プール、ページ属性コンテキストおよびセッション(セッション変数を含む)を通じて渡された値は、すべてのキャッシュ済ページレットで使用できるとはかぎりません。ネストされたページレットが、常に親と同時にコールされるとはかぎらないからです。さらに、セッションやコンテキストのデータに依存しているページレットは、いずれにしてもキャッシュ可能であることはまれなため、これらのページレットをキャッシュしようとすると、不確定的な動作が生じる可能性があります。

render:satellitepageタグ(およびsatellite:pageタグとこれらと同等の機能を持つXMLタグ)を通じてネストされたページレットに渡されるすべてのパラメータは、SiteCatalog内でページ基準として指定される必要があります。WebCenter Sitesでは、このようにして、キャッシュ対象のページレットを作成する際に該当するパラメータが特定されます。SiteCatalogにリストされているもの以外のパラメータは使用できません(このことを示すエラーがログに書き込まれます)。

<cs:ftcs>
<html>
  <body>
    <render:satellitepage pagename="My/Sample/Page" />
  </body>
</html>
</cs:ftcs>

BLOBのキャッシング

Satelliteタグを使用したBLOBのロードとキャッシュは、Satelliteタグを使用してページレットをロードおよびキャッシュする方法と似ています。次のサンプル・コードでは、BLOBとページレットをコールすることで、前述の例を拡張しています。

7行目では、ics:selecttoタグを使用して、データベースからBLOBを取得するシンプルなSQL問合せを実行します。結果は、imagelistという名前のIListの形式で返されます。

12行目では、satellite:blobタグを使用して、データベースから取得されたBLOBをロードします。satellite.pageタグの場合と同様に、このBLOBがSatelliteのキャッシュ内にない場合は、SatelliteはこのBLOBをロードした後にキャッシュします。cachecontrolパラメータは、このBLOBが、指定された時刻(この例では30分ごと)に失効するように設定されています。

  1. <html>

  2. <body>

  3. <!-- NOTE: This will fail if list has no content (== null) -->

  4. <ics:setvar name="category" value="logo"/>

  5. <ics:setvar name="errno" VALUE="0"/>

  6. <ics:selectto from="SmokeImage" list="imagelist" where="category" limit="1"/>

  7. <ics:then>

  8. <!-- Test a blob -->

  9. <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" />

  10. <ics:then>

  11. <render:satellitepage pagename="QA/Satellite/Functional/xml/"pagelet1"cachecontrol="never"/>

  12. </body>

  13. </html>

有効期限のないBLOB

会社のロゴなど、ほとんどまたはまったく変化しないバイナリ・ファイル(BLOB)がサイト上に存在していて、Satelliteサーブレットを使用してページレット・レベルでキャッシュしている場合は、代替の方法を使用してこれらのBLOBを処理することで、パフォーマンスを向上させることができます。

有効期限のないBLOBを処理するには:

  1. 有効期限のないイメージをすべてのSatellite Serverホストにコピーします。これらは、Webサーバーのdocルートの下に配置します。

  2. これらのイメージには、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プロパティによって制御されます。expirationプロパティの詳細は、『Oracle Fusion Middleware WebCenter Sitesプロパティ・ファイル・リファレンス』を参照してください。

5.3 Satellite Serverキャッシュのコンテンツの表示

Inventoryサーブレットを使用すると、キャッシュに格納された様々なアイテムを表示できます。Inventoryサーブレットを呼び出すには、次のURLを使用します。

http://host:port/servlet/Inventory?username=username&password=passwordword&detail=value

ここで:

表5-2 Inventoryサーブレットのパラメータ

パラメータ 説明

host:port(必須)

キャッシュを表示するSatellite Serverホストのホスト名とポート番号。

username(必須)

そのSatellite Serverホストにログインするために入力するユーザー名。

password(必須)

そのSatellite Serverホストにログインするために入力するパスワード。

detail(任意指定)

Inventoryサーブレットによって表示する情報のタイプ。有効な値は次のとおりです。

  • names: ヘッダー情報に加えて、キャッシュ内のページのページ名を表示します。

  • keys: ヘッダー情報に加えて、キャッシュ内のアイテムのキーとページ名を表示します。

detailパラメータを指定しない場合や、このパラメータをnamekeys以外の値に設定した場合は、ヘッダー情報が表示されます。


ヘッダーには次の情報が含まれています。

表5-3 情報タイプ

情報タイプ 説明

リモート・ホスト

このSatellite Serverシステムが要求を転送する先となるホスト。

最大キャッシュ・オブジェクト数

キャッシュに格納できるアイテムの最大数。

現在のサイズ

キャッシュに現在格納されているアイテムの数。

キャッシュのチェック間隔

失効したアイテムがキャッシュに格納されているかどうかをチェックする間隔(分単位)。

デフォルトのキャッシュ有効期限

expirationプロパティの値。

最小ファイル・サイズ(バイト単位)

この値より大きいアイテムはファイルに格納されます。この値より小さいアイテムはRAMに格納されます。


5.3.1 CacheManager

WebCenter Sites CacheManagerオブジェクトは、WebCenter SitesとSatellite Serverの両方のキャッシュを管理します。CacheManagerの役割は次のとおりです。

  • ページレットをキャッシュ追跡表に記録します。

  • キャッシュ依存性アイテムをキャッシュ追跡表に記録することで、ページやページレットに含まれたコンテンツ(アセット)の記録を保持します。キャッシュ依存性アイテムとは、そのアイテムが変更されると、そのアイテムが格納されているキャッシュ内のページやページレットを無効化するアイテムのことです。キャッシュ依存性アイテムは、現在のページとそのページのすべての親ページの依存要素としてログに記録されます。

  • 無効なアイテムが含まれたページやページレットをWebCenter SitesとSatellite Serverのキャッシュから削除します。

  • 無効なページが削除された後に、更新されたページやページレットを使用してWebCenter SitesとSatellite Serverのキャッシュを再構築します。

5.3.2 SiteCatalog表

WebCenter SitesのSiteCatalog表には、WebCenter Sitesによって生成されたページとページレットが一覧表示されます。エレメントがWebCenter SitesやSatellite Serverでキャッシュされるためには、そのエレメントのエントリがSiteCatalog表に含まれている必要があります。

SiteCatalog表内のフィールドは、WebCenter Sitesのページのデフォルト動作(デフォルトのキャッシング動作を含む)を設定します。SiteCatalog表とそのフィールドの詳細は、第23.4項「テンプレート・アセットの作成」および第23.6項「SiteEntryアセットの作成」を参照してください。

5.3.3 キャッシュ・キー

WebCenter SitesやSatellite Serverのキャッシュに格納されたアイテムには、キャッシュ・キーと呼ばれる名前が付与されます。キャッシュ・キーは、キャッシュ内の各アイテムを一意に識別します。CacheManagerは、キャッシュ・キーを使用してキャッシュ内のアイテムを検索します。WebCenter SitesとSatellite Serverは、SiteCatalog表のpagenameresargspagecriteriaの各フィールドの値と他の内部データに基づいて、自動的にキャッシュ・キーを生成します。

5.3.3.1 pagecriteriaとキャッシュ・キー

ページで使用される変数をキャッシュ・キーに含めるには、SiteCatalog表のpagecriteriaフィールドでそれらの値をカンマ区切りリストの形で指定します。たとえば、redblueという値が使用されるmyPageという名前のページがあるとします。redbluemyPageのキャッシュ・キーに含めるには、次のように入力します。

pagecriteria列にはfavoritecolor,second_favoritecolorresargsl列にはfavoritecolor=red&second_favoritecolor=blue

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で設定された値をオーバーライドします。たとえば、myPagepagecriteriared,blueに設定した場合は、次のようになります。

  • URLを通じてgreenという値が渡された場合は、(red,blueでなく)green,bluemyPageのキャッシュ・キーに組み込まれます。

  • URLを通じてgreen,violetという値が渡された場合は、(red,blueでなく)green,violetmyPageのキャッシュ・キーに組み込まれます。

  • URLを通じてgreen,violet,yellowという値が渡された場合は、エラーが発生します。

ページにpagecriteriaが設定されていない場合は、resargsフィールドの値がキャッシュ・キーに組み込まれます。pagecriteriaの場合と同様に、URLを通じて渡された値はresargsフィールドで指定された値をオーバーライドします。

5.3.4 キャッシングのプロパティ

WebCenter SitesとSatellite Serverのデフォルトのキャッシュ設定は、futuretense.iniファイルに含まれています。追加のSatellite Serverプロパティは、satellite.propertiesに含まれています。すべてのプロパティは、プロパティ・エディタを使用して変更できます。

この項では、WebCenter SitesとSatellite Serverのキャッシングのプロパティについて概述します。プロパティとプロパティ・エディタの詳細は、『Oracle Fusion Middleware WebCenter Sitesプロパティ・ファイル・リファレンス』を参照してください。

5.3.4.1 WebCenter Sitesページのキャッシングのプロパティ

futuretense.ini内の次のプロパティは、WebCenter Sites上のディスク・キャッシングを制御します。

  • cs.pgCacheTimeout: WebCenter Sitesのキャッシュ内のページのデフォルト・タイムアウトを指定します。

  • cs.freezeCache: 失効したエントリをキャッシュから削除するためにキャッシュ削除スレッドを実行するかどうかを制御します。

  • cs.nocache: WebCenter Sitesページのキャッシュ全体を無効にします。

  • cc.SystemPageCacheTimeout: キャッシュされたページがメモリー内に保持される時間を分単位で指定します。

  • cs.alwaysUseDisk: SiteCatalog内で、キャッシュ・オーバーライドのプロパティが指定されていないページ・エントリのデフォルト動作を指定します。

  • cc.SystemPageCacheCSz: メモリー内にキャッシュできるページの最大数を指定します。

5.3.4.2 Satellite Serverのプロパティ

Satellite Serverには、2つのプロパティ・セットが用意されています(詳細は、『Oracle Fusion Middleware WebCenter Sitesプロパティ・ファイル・リファレンス』を参照)。

  • 1つ目のプロパティ・セットは、WebCenter Sitesシステム上のfuturetense.iniファイルに含まれており、このセットに含まれるものは次のとおりです。

    • satellite.page.cachecontrol.default: satellite.pageタグとRENDER.SATELLITEPAGEタグ(およびこれらと同等の機能を持つJSPタグ)のcachecontrolパラメータのデフォルト値を指定する非推奨のプロパティです。

    • satellite.blob.cachecontrol.default: satellite.blobタグとRENDER.SATELLITEBLOBタグ(およびこれらと同等の機能を持つJSPタグ)のcachecontrolパラメータのデフォルト値を指定します。

  • もう1つのプロパティ・セットは、各Satellite Serverホスト上のsatellite.propertiesファイルに含まれており、このセットを構成するものは次のとおりです。

    • cache_folder: Satellite Serverがページレットをディスクにキャッシュする際のキャッシュ先ディレクトリを指定します。

    • file_size: 指定されたサイズを基準にして、ディスクにキャッシュされるページレットおよびBLOBを、メモリーにキャッシュされるページレットおよびBLOBから分離します。

    • expiration: BLOBがSatellite Serverのキャッシュ内に保持される期間のデフォルト値を設定します。

    • cache_check_interval: キャッシュ・クリーナ・スレッドの実行間隔を制御します。これにより、失効したオブジェクトがキャッシュから削除されるタイミングが制御されます。

    • cache_max: 一度にキャッシュできるオブジェクト(ページレットとBLOB)の最大数を指定します(メモリー・キャッシュとディスク・キャッシュの合計)。

5.4 二重バッファ・キャッシング

WebCenter SitesとEngageでは、ライブWebサイト上でWebCenter SitesとSatellite Serverのキャッシュを同時に使用するという二重バッファ・キャッシュ戦略が実装されます。この二重バッファ・キャッシュ戦略により、WebCenter SitesまたはSatellite Server上で、ページが常にキャッシュ内に保持されます。

他のCSモジュールやCS製品を使用せずに、WebCenter SitesコアおよびSatellite Serverを実行している場合は、CacheManager Java APIを使用して同様のキャッシュ戦略を実装できます。CacheManager Java APIの詳細は、Oracle Fusion Middleware WebCenter Sites Java APIリファレンスを参照してください。

WebCenter SitesコアとSatellite Serverのキャッシュはどちらも、WebCenter SitesのCacheManagerオブジェクトによって管理されます。CacheManagerは、エレメントとこれらのエレメントによってコールされるアセットをキャッシュ追跡表に記録することで、コンテンツが変化するタイミングを追跡管理します。

アセットが更新およびパブリッシュされると、WebCenter SitesとSatellite Serverのキャッシュは次の順序で自動的にフラッシュおよび更新されます。

cs-ss1.gifの説明が続きます
図cs-ss1.gifの説明

5.4.1 二重バッファ・キャッシングの実装

二重バッファ・キャッシングを実装するため最初のステップは、第5.1項「モジュラ・ページ・デザイン」の説明に従ってモジュラ・ページをデザインすることです。モジュラ・ページ・デザインが完成したら、次の3つのステップによって二重バッファ・キャッシュ戦略を実装します。

  • ページレットのキャッシュ戦略を策定します。

  • SiteCatalog表のpagecriteriaフィールドを使用して、個別のページとページレットのキャッシング方法を設定します。

  • Satelliteのタグを使用してエレメントをコーディングします。

5.4.1.1 ページレットのキャッシュ戦略

モジュラ・ページ・デザインでは、キャッシングはページレット・レベルで行われます。格納ページは一切キャッシュされないため、すべてのキャッシュ済ページレットは常にACLによって保護されます。ページレットの更新頻度に基づいて、キャッシュ対象にするページレットを選択します。

次の表では、ページレットのキャッシングに関するガイドラインを要約しています。

表5-4 ページレットのキャッシングに関するガイドライン

ページレットをキャッシュすべきケース ページレットをキャッシュすべきでないケース
  • コンテンツがめったに変化しない場合。

  • 評価が機能することを必要とするロジックがページレットに含まれていない場合。

  • コンテンツが頻繁に変化する場合。

  • コンテンツのリアルタイム性が要求される場合。

  • ACLの有無をチェックするコードや、評価が機能することを必要とする他のロジックがページレットに含まれている場合。


次の図では、モジュラ・ページの例を示しています。

図5-3 モジュラ・ページ

図5-3の説明が続きます
「図5-3 モジュラ・ページ」の説明

格納ページは絶対にキャッシュしないでください。キャッシュしないことにより、キャッシングのパフォーマンス上の利点を通常どおり得られるとともに、WebCenter Sitesによる評価を必要とするロジックをページに配置することが可能になります。また、WebCenter SitesのACLによってページを保護することも可能になります。

この例のヘッダーとフッターのページレットは、ディスクにキャッシュされる必要があります。これらのページレットはめったに更新されないため、そのことを考慮してデザインする必要があります。ヘッダーとフッターは、テンプレート内に書き込まれた静的HTMLであっても、WebCenter Sitesのディスクにキャッシュされたコンテンツであってもかまいません。

サイドバーもディスク・キャッシング対象の有力な候補です。サイドバーにはわずかなバリエーションしかなく、そのコンテンツは少数のパラメータによって決定されるからです。

本文ページレットのキャッシュ方法を決定することはさらに複雑です。本文ページレットのコンテンツは、多くの場合、Webサイトの訪問者がサイト内のどこにいるのかによって変化します。本文ページレットのコンテンツとしては、次の3つのタイプが考えられます。

  • Webサイトの訪問者が実行する検索の結果

  • 頻繁に実行される問合せの結果

  • 記事

キャッシュ戦略は次のような内容にする必要があります。

  • 本文ページレットのコンテンツが、Webサイトの訪問者が入力するパラメータに基づいた検索の結果である場合は、そのコンテンツをキャッシュしないでください。このようなページは訪問者ごとに変化するため、これらをキャッシュすることの利点はほとんどありません。

  • コンテンツが訪問者によって頻繁に使用される標準問合せの結果である場合は、結果セットのキャッシングを使用してください。頻繁に実行される問合せをメモリーにキャッシュすると、パフォーマンスが向上します。結果セットのキャッシングの詳細は、第14章「結果セットのキャッシングと問合せ」を参照してください。

  • 本文ページレットのコンテンツが記事のテキストである場合は、そのページレットをディスクにキャッシュしてください。

5.4.2 cscacheinfoの設定

SiteCatalog表のcscacheinfoフィールドの値によって、WebCenter Sites上のページのキャッシュ方法をページごとに制御できます。

これらのプロパティは、Webサイト内のページごとおよびページレットごとに変更できます。たとえば、格納ページのエレメントがWebCenter Sitesでキャッシュされないようにするには、cscacheinfoの値をfalseに設定します。

cscacheinfoフィールドの詳細は、第23.4項「テンプレート・アセットの作成」を参照してください。

5.4.3 キャッシングのためのコーディング

二重バッファ・キャッシングを実装するには、Satellite Serverのタグを使用してエレメントをコーディングします。WebCenter SitesとSatellite Serverのみを実行している場合は、Oracle Fusion Middleware WebCenter Sitesタグ・リファレンスのSatellite Serverに関する項に記載されているSatelliteタグを使用してください。

自動キャッシュ・メンテナンスが機能するためには、アセットがキャッシュ追跡表に記録される必要があります。ASSET.LOADタグを使用してアセットをロードする場合は、そのアセットは自動的にキャッシュ追跡表に記録されます。ASSET.LOADタグが使用されないセクションについては、RENDER.LOGDEPタグを使用してコンテンツをキャッシュ追跡表に記録してください。


注意:

キャッシュの依存関係がログに記録されるのは、ページまたはページレットがWebCenter Sites上でキャッシュされている場合のみです。あるページが、WebCenter SitesではキャッシュされていないがSatellite Serverではキャッシュされている場合は、そのページのコンテンツが更新されたときに、そのページはキャッシュから自動的にフラッシュされません。


5.4.4 キャッシングとセキュリティ

キャッシュされるページレットについては、サイトを設計してキャッシュ戦略を策定する際に、セキュリティに関して特別な考慮が必要となります。次の各項では、WebCenter SitesとSatellite Serverでキャッシュされるページのセキュリティ考慮事項を概述しています。

5.4.4.1 WebCenter Sitesのセキュリティ

WebCenter Sitesでディスクにキャッシュされるページレットは、WebCenter SitesのACLによって制約されるため、これらのACLを使用してページへの不正なアクセスを防止できます。

ただし注意点として、WebCenter Sitesは格納ページのACLをチェックしますが、格納ページによってコールされるページレットのACLはチェックしません。たとえば、OpenSecretTopSecretの3つのACLをサイトで使用しているとします。格納ページはOpen ACLのメンバーが表示できますが、格納ページによってコールされるページレットは、Secret ACLとTopSecret ACLのメンバーのみが表示できるようにする必要があります。WebCenter Sitesでは、訪問者の格納ページのACLのみがチェックされるため、Open ACLのメンバーである訪問者は、Secret ACLとTopSecret ACLのメンバー向けのコンテンツを表示できます。

関連するACLがすべてチェックされるようにするには:

  1. 次のサンプル・コードに示すように、保護するページのACLをそのページのキャッシュ基準に含めます。

    <render.satellitepage pagename="innerwrapper" userAcl="SessionVariables.member" c="Article" cid="123">
    
  2. 次のサンプルに示すように、ページレット内で、ACLをチェックするコードを挿入します。

    <asset.load name="art" type="Variables.c" OBJECTID="Variables.cid"/> 
    <ASSET.GET NAME="art" FIELD="myACL"/> <!-- note you need a column in your db to support this --> 
    <IF COND="Variables.userACL=Variables.myACL"> 
    <THEN> 
    <render.satellitepage pagename="protected_art_tmpl1" c="Variables.c" cid="Variables.cid"/> 
    </THEN> 
    <ELSE> 
    <render.satellitepage pagename="accessDenied"/> 
    </ELSE> 
    </IF>
    

5.4.4.2 Satellite Serverのセキュリティ

Satellite Server上でキャッシュされるページレットは、次の場合にのみWebCenter SitesのACLによって制約されます。

  • WebCenter Sitesのキャッシュから取得された場合

  • ページ要求に応えるために、WebCenter Sitesによって生成される必要がある場合

ページレットがSatellite Serverのキャッシュから提供される場合は、そのページレットはWebCenter SitesのACLによって保護されなくなります。

Satellite Serverページのコンテンツのセキュリティを確保するには、格納ページをいっさいキャッシュせずに、キャッシュされないコンテナにACLチェック・メカニズムを必ず組み込んでください。

エレメントがSatelliteのタグを使用してコーディングされているが、
Satellite Serverをまだインストールしていない場合は、第5.4.4.1項「WebCenter Sitesのセキュリティ」で概述されているページ・デザイン考慮事項が当てはまります。ただし、Satellite Serverをインストールしたら、WebCenter Sitesは、格納ページからコールされるキャッシュ対象外ページレットのACLをチェックします。Satellite Server上でキャッシュされるページレットのACLはチェックされません。