出力キャッシュとキャッシュ プロファイル
最終更新日: 2010年9月27日
適用対象: SharePoint Server 2010
この記事の内容
出力キャッシュの利点と不利な点
キャッシュ プロファイル
手順
Microsoft SharePoint Server 2010 は、ASP.NET に備わる出力キャッシュ テクノロジを使用して、ページ コンテンツをいつどのように提供するかを管理しています。ASP.NET の出力キャッシュは、SharePoint Server 2010 キャッシュ機能の基礎です。したがって、SharePoint Server 2010 の出力キャッシュは、ASP.NET で使用できる出力キャッシュ テクノロジと同様に動作します。
アクセス数の多い SharePoint Server 2010 サイトでは、頻繁にアクセスされるページを一度に 1 分間でもキャッシュすることで、スループットを大幅に向上させることができます。ページが出力キャッシュによってキャッシュされているときは、そのページに対する以後の要求では、指定のキャッシュ期間の間は、ページを作成したコードを実行することなく、出力ページが使用されます。
出力キャッシュの利点と不利な点
出力キャッシュを使用してページのレンダリングおよびページ アイテムのレンダリング パフォーマンスを高めることを選択する前に、出力キャッシュを実装した場合の利点と不利な点について考慮してください。このドキュメントにすべての考慮事項が示されているわけではありませんが、考慮に入れることができる利点には、以下が含まれます。
コンテンツ (ページ、ページ内のアイテムなど) に相当する各クラスが受け取る応答が高速になるため、最初のレンダリング後は待機時間が短縮されます。
最初のレンダリング後は、各サーバーで、同じページを提供するために使用される CPU 時間と電力が少なくなります。
表示されたページの各データ ソースは、出力キャッシュによってトラフィック フローの低下が実現されるため、より多くの Web クライアントにサービスを提供するよう調整できます。
出力キャッシュされたバージョンのページに対する各ページ要求について、サーバーは以下のことを行う必要がありません。
.aspx ページのソース コードやページ上の .ascx コントロールをフェッチするためにデータベースとの間を往復する。
コントロールを再読み込みして再度レンダリングを行う。
コントロールがデータを得るために依存しているデータ ソースに再度クエリを実行する。
ただし、出力キャッシュを実装することを決定する前に、以下の課題についても考慮してください。
出力キャッシュはより多くのメモリを消費します。ページの各バージョンが Web クライアント上でメモリを消費します。
出力キャッシュを 2 台以上のフロントエンド Web サーバーで使用すると、一貫性に影響が生じる場合があります。つまり、要求ごとに更新を確認しないようにキャッシュ プロファイルを構成できます。たとえば、元のページが更新された後、60 秒が経過するまでは、出力キャッシュされたバージョンの Web ページへの変更を無視するように指定できます。トポロジ内にフロントエンド Web サーバーが 2 台あり、ユーザーの要求をルーティングするためにロード バランサーも利用している場合は、ページが一方のサーバーによってレンダリングされてから、後続の要求がその 60 秒の時間内に 2 台目のサーバーにルーティングされると、サイト コンテンツを表示するユーザーには一貫性がないコンテンツが表示されることがあります。
キャッシュ プロファイル
SharePoint Server 2010 には、ASP.NET 2.0 でもともと利用できる方法よりも、出力キャッシュをさらに正確にカスタマイズするためのメカニズムが追加されています。SharePoint Server 2010 にはキャッシュ プロファイルが用意されています。これは、名前を付けて、展開したサイト内のページ、ページ アイテム、コンテンツ タイプ、および調整のレベルに適用できるリスト スタイルのキャッシュ設定です。
キャッシュ プロファイルを使用すると、出力キャッシュに適用する詳細さのレベルを制御でき、サイトの所有者や管理者が、独自のキャッシュ プロファイルを選択してページ レイアウトに対して弾力的に適用することを許可または拒否することができます。また、出力キャッシュの対象を、サイト コレクション レベル、サイト レベル、およびページ レイアウト レベルに設定できます。
キャッシュの動作は、サイトに対するユーザーのアクセス権に基づいて編成できます。たとえば、フル コントロールを持つグループ、読み取りと書き込みの権限を持つグループ、および読み取り専用の権限を持つグループの 3 つを定義することができます。出力キャッシュは、同じ権限を持つユーザーには同じ方法でページのレンダリングを行うため、キャッシュ プロファイルを使用すると、キャッシュの対象を特定の対象ユーザー グループに設定することができます。SharePoint Server 2010 によって既定で提供されるキャッシュ プロファイルでは、キャッシュ システムは、ユーザー アクセス権のグループごとに 1 回、ページをレンダリングし、結果の HTML ストリームをキャッシュします。同じアクセス権を持つ次のユーザーは、キャッシュからストリームを取得します。
キャッシュ プロファイルを作成して展開した後は、キャッシュ プロファイルに加えた変更はすべて直ちに、サイトの該当するすべてのコンテンツに影響を与えます。たとえば、あるサイト コレクションに含まれるすべてのドキュメント ライブラリのページ レイアウトが最初は 60 秒間キャッシュされていて、この時間を 120 秒に延長すると、そのサイト コレクション内に存在するドキュメント ライブラリのページ レイアウトやサイトの数とは無関係に、サイト コレクションに含まれるすべてのドキュメント ライブラリのページ レイアウトが 120 秒間キャッシュされます。
キャッシュ プロファイルは、SharePoint Server 2010 の標準リストに格納されているキャッシュ プロファイルを使用して定義し、VaryByCustom ハンドラーを使用してプログラム的に拡張することができます。ユーザー インターフェイスをとおしてサイトやページ レイアウトにキャッシュ プロファイルを適用した場合、下のレベルへの伝達により、子サイトでの一貫性が実現されます。キャッシュ ポリシーは、他の SharePoint Server 2010 の機能からは独立してセキュリティで保護されます。
注意
この方法でキャッシュ プロファイルを作成する方法の詳細については、「[方法] VaryByCustom イベント ハンドラーを使用してキャッシュを拡張する」を参照してください。ここでは、VaryByCustom イベント ハンドラーを作成する方法、キャッシュ プロファイルを変更して、VaryByCustom に渡す独自の文字列パラメーターを含める方法、および必要なコードを global.asax ファイルに追加する方法について説明しています。
手順
サイト コレクションの出力キャッシュを有効にするには
サイト コレクションのルート Web サイトに移動します。[サイトの操作] メニューの [サイトの設定] をクリックします。
[サイト コレクションの管理] セクションの [サイト コレクション出力キャッシュ] を選択します。
このサイト コレクションの出力キャッシュを有効にするには、[出力キャッシュを有効にする] チェック ボックスをオンにします。
[匿名キャッシュ プロファイル] の一覧から匿名ユーザーのキャッシュ プロファイルを選択します。このプロファイルは、匿名ユーザーがこのサイト コレクション内のサイトにアクセスするときに適用されます。
[認証キャッシュ プロファイル] の一覧から、認証されたユーザーのキャッシュ プロファイルを選択します。このプロファイルは、認証されたユーザーがこのサイト コレクション内のサイトにアクセスするときに適用されます。
[ページ出力キャッシュ ポリシー] のオプションを選択します。
発行サイトで異なる出力キャッシュ プロファイルを使用できる場合は、[発行サイトで、別のページ出力キャッシュ プロファイルを使用できるようにする] チェック ボックスをオンにします。
ページ レイアウトで異なるページ出力キャッシュ プロファイルを使用できる場合は、[ページ レイアウトで、別のページ出力キャッシュ プロファイルを使用できるようにする] チェック ボックスをオンにします。
このサイト コレクションのページ上に追加のキャッシュ情報 (そのページのコンテンツが最後にレンダリングされた日時など) を表示する場合は、[ページにキャッシュのデバッグ情報を表示する] チェック ボックスをオンにします。
[OK] をクリックします。
サイトの出力キャッシュを有効にするには
サイト コレクションのルート Web サイトに移動します。[サイトの操作] メニューの [サイトの設定] をクリックします。
[サイトの管理] セクションの [サイト出力キャッシュ] をクリックします。
[匿名キャッシュ プロファイル] のオプションを選択します。
キャッシュ プロファイルを継承する場合は、[継承] をクリックします。
現在使用可能なものからキャッシュ プロファイルを選択する場合は、[ページ出力キャッシュ プロファイルを選択する] をクリックします。
これらの設定を、このルート Web サイトのすべてのサブサイトに適用する場合は、[これらの設定をすべてのサブサイトに適用する] チェック ボックスをオンにします。
[OK] をクリックします。
新しいキャッシュ プロファイルを作成するには
サイト コレクションのルート Web サイトに移動します。[サイトの操作] メニューの [サイトの設定] をクリックします。
[サイト コレクションの管理] セクションの [サイト コレクションのキャッシュ プロファイル] をクリックします。
[新規作成] をクリックします。
新しいキャッシュ プロファイルを定義して作成します。
表 1. キャッシュ プロファイルの詳細の説明
詳細
説明
[タイトル]
必須。このキャッシュ プロファイルのシステム名。
[表示名]
サイト所有者とページ レイアウト所有者が使用できるキャッシュ プロファイルのリストに表示されます。
[表示の説明]
サイト所有者とページ レイアウト所有者が使用できるキャッシュ プロファイルのリストに表示されます。
[ACL チェックを実行する]
キャッシュ内のすべてのアイテムがセキュリティによってトリミングされるようにする場合に選択します。
[有効]
キャッシュを行う場合に選択します。
[期間]
キャッシュされたバージョンを使用できる状態に維持する秒数。
[変更を確認する]
ページ要求ごとに、サイトが変更されていないことを確認し、サイトに変更があるときはキャッシュをフラッシュする場合に選択します。
パフォーマンスを重視する場合はオフにします。オフの場合、[期間] で指定されている秒数の間、サイトに対する変更の確認は行われません。
[ユーザー設定のパラメータごとにキャッシュ]
ASP.NET HttpCachePolicy.SetVaryByCustom メソッドのドキュメントで説明されているように値を指定します。
[HTTP ヘッダーごとにキャッシュ]
ASP.NET HttpCachePolicy.VaryByHeaders プロパティのドキュメントで説明されているように値を指定します。
[クエリ文字列パラメータごとにキャッシュ]
ASP.NET HttpCachePolicy.VaryByParams プロパティのドキュメントで説明されているように値を指定します。
[ユーザー権限ごとにキャッシュ]
ユーザーが他のすべてのユーザーと同一のキャッシュされたページを表示するためには、SharePoint のセキュリティの範囲すべてについて、有効な同一の権限を持つ必要があるようにする場合に選択します。
[キャッシュ可能]
ドロップダウン リストから値を選択します。選択肢には、NoCache、Private、Server、ServerAndNoCache、Public、および ServerAndPrivate があります。詳細については、ASP.NET HttpCacheability 列挙のトピックを参照してください。
[認証された使用に対して安全を確保する]
認証済みの状況に対して管理者とページ レイアウト編集者に適用を許可するポリシーについてのみ選択します。
[キャッシュされたコンテンツを編集時に表示する]
編集権限を持つユーザーにページをキャッシュすることを許可しないという既定の動作を適用しない場合に選択します。