プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle WebCenter Sitesでの開発
12c (12.2.1)
E72540-01
目次へ移動
目次

前
次

38 ページのデザインとキャッシングの理解

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

ページのデザインとキャッシングの詳細は、次の項を参照してください。

38.1 モジュラ・ページ・デザインについて

モジュラ・ページ・デザイン戦略は、複数のエレメントで構成されています。モジュラ・ページ・デザインには次のようないくつかの利点があります。

  • 効率的なキャッシュ戦略を策定可能にすることで、システム・パフォーマンスを向上させます。

  • ナビゲーション・バーのような一般的なデザイン・エレメントを1回コーディングするのみで、複数のWebページで利用できます。

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

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

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

それぞれの四角形は、生成された1つ以上のエレメントの出力を表し、これらはページレットと呼ばれます。これらのページレットは、それを含むプロジェクトによってコールされ、これらを使用して次のことが可能になります。

  • 完成したページにページレットを表示する方法をレイアウトします。

  • カスタムアクセス制御リスト(ACL)チェック・コードなど、ページが表示されるたびに評価する必要があるコードを定義します。

この戦略を使用すると、エレメントを1回コーディングのみで、そのエレメントをWebサイトの様々な場所で利用できます。

38.2 キャッシングについて

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

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

  • WebCenter Sitesでは、WebCenter Sitesシステム上でページがキャッシュされます。

  • Satellite Serverは、WebCenter Sitesシステム用の第2レベルのキャッシングを提供し、Webページのリモート・キャッシュとしても使用できます。

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

38.2.1 WebCenter Sitesのキャッシング

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

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

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

JSPタグ XMLタグ

satellite:page

SATELLITE.PAGE

render:satellitepage

RENDER.SATELLITEPAGE

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

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

38.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を格納します。BlobServerのタグの詳細は、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に設定します。

38.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プロパティで制御します。Satellite Serverのプロパティの設定の詳細は、Oracle WebCenter Sitesプロパティ・ファイル・リファレンスを参照してください。

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

38.2.3.1 キャッシュの有効期限

Satellite Server上のページとページレットの有効期限は、SiteCatalog表のsscacheinfo列で指定します。ページまたはページレットがSatellite Serverを通じて呼び出されるたびに、Satellite Serverはsscacheinfoフィールドの値を処理して、そのページまたはページレットの有効期限を特定します。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のプロパティ」を参照してください。

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

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

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

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

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

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

図38-2の説明が続きます
「図38-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:port/servlet/Satellite?pagename=page

ここで、hostportは、ご使用の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を処理するには::

  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 WebCenter Sitesプロパティ・ファイル・リファレンスを参照してください。

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

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

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

これらのパラメータは、表38-2に定義されています。

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

パラメータ 説明

host:port (必須)

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

username (必須)

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

password (必須)

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

detail (任意指定)

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

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

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

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

ヘッダーには、表38-3に定義されている情報タイプが含まれます。

表38-3 情報タイプ

情報タイプ 説明

リモート・ホスト

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

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

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

現在のサイズ

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

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

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

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

expirationプロパティの値。

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

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

38.2.3.3.1 CacheManager

CacheManagerオブジェクトは、WebCenter SitesとSatellite Serverの両方のキャッシュを管理します。CacheManagerは、次の機能を実行できます。

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

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

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

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

CacheManagerの使用の詳細は、「WebCenter Sitesでのキャッシュ管理の使用」を参照してください。

38.2.3.3.2 SiteCatalog表

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

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

38.2.3.3.3 キャッシュ・キー

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

38.2.3.3.3.1 pagecriteriaとキャッシュ・キー

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

redbluemyPageのキャッシュ・キーに含めるには、次のように入力します。

  • favoritecolor,second_favoritecolorpagecriteria列に

  • favoritecolor=red&second_favoritecolor=blueresargsl列に

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フィールドで指定された値をオーバーライドします。

38.2.3.3.4 キャッシング・プロパティ

WebCenter SitesとSatellite Serverのデフォルトのキャッシュ設定は、wcs_properties.jsonファイルに含まれています。これらのプロパティは、プロパティ管理ツールを使用して変更できます。プロパティおよびプロパティ管理ツールの詳細は、Oracle WebCenter Sitesプロパティ・ファイル・リファレンスを参照してください。

Satellite Serverの追加プロパティは、configディレクトリの下にあるリモートSatellite Serverのwcs_properties.jsonファイルに含まれており、手動で変更する必要があります。

38.2.3.3.5 ページ・キャッシング・プロパティ

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

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

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

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

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

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

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

38.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)の最大数を指定します(メモリー・キャッシュとディスク・キャッシュの両方の合計)。

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

WebCenter SitesOracle 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のキャッシュは図38-3に示す順序で自動的にフラッシュおよび更新されます。

図38-3 キャッシュ・フラッシュの順序1

図38-3の説明が続きます
「図38-3 キャッシュ・フラッシュの順序1」の説明
  • 図38-4では、コンテンツ・プロバイダは、更新されたアセットを配信システムにパブリッシュします。CacheManagerは、キャッシュ追跡表をチェックして、どのキャッシュ済アイテムがこれらの更新されたアセットの影響を受けるのかを確認します。

    図38-4 キャッシュ・フラッシュの順序2

    図38-4の説明が続きます
    「図38-4 キャッシュ・フラッシュの順序2」の説明
  • 図38-5では、CacheManagerは、古いPage1WebCenter Sitesのキャッシュからフラッシュして、更新されたPage1WebCenter Sitesのキャッシュに再ロードします。Page1が要求された場合は、Satellite Serverのキャッシュ内にある古いバージョンのPage1がその要求元に渡されます。これにより、WebCenter Sitesコンピュータでは、キャッシュを削除して再構築する際の過剰な負荷が防止されます。

    図38-5 キャッシュ・フラッシュの順序3

    図38-5の説明が続きます
    「図38-5 キャッシュ・フラッシュの順序3」の説明
  • 図38-6では、CacheManagerは、古いアイテムをSatellite Serverのキャッシュからフラッシュします。訪問者がこのWebサイトにアクセスしてPage1を要求すると、Satellite Serverは検索を実行して、Page1が自身のキャッシュに存在するかどうかを確認します。Page1はSatellite Serverのキャッシュ内には存在しないため、この要求はWebCenter Sitesに転送されます。

    図38-6 キャッシュ・フラッシュの順序4

    図38-6の説明が続きます
    「図38-6 キャッシュ・フラッシュの順序4」の説明
  • Satellite Serverシステムのキャッシュは、WebCenter Sitesのキャッシュから取得された更新バージョンのPage1で一杯になります。この更新されたページは、要求元に提供されます。Page1が再び要求された場合は、このページはSatellite Serverのキャッシュから提供されます。

38.3.1 二重バッファ・キャッシングの実装について

Webサイトに二重バッファ・キャッシングを実装するための最初の手順は、「モジュラ・ページ・デザインについて」で説明しているように、モジュラ・ページを設計することです。モジュラ・ページ・デザインを開発したら、二重バッファ・キャッシング戦略を次の3つの手順で実装します。

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

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

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

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

モジュラ・ページ・デザインの場合、キャッシングはページレット・レベルで行われます。キャッシュされたページレットが常にACLによって保護されるように、格納ページがキャッシュされることはありません。ページレットの更新頻度に基づいて、キャッシュ対象にするページレットを選択します。

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

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

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

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

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

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

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

モジュラ・ページの例を図38-7に示します。

図38-7 モジュラ・ページ

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

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

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

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

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

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

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

  • 記事

キャッシング戦略では、次の点を検討する必要があります。

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

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

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

38.3.2 cscacheinfoの設定

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

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

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

38.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ではキャッシュされている場合は、そのページのコンテンツが更新されたときに、そのページはキャッシュから自動的にフラッシュされません。

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

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

38.3.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>
    

38.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はチェックされません。