HTML キャッシュを設定する
HTML キャッシュは、ページ全体ではなく、レンダリングをキャッシュする出力キャッシュです。HTML キャッシュを使用すると Web サイトのパフォーマンスを向上させることができます。
HTML 出力キャッシュを有効にするには:
-
\App_Config\Sitecore\CMS.Core\Sitecore.Sites.config
ファイルのsites
ノードの事前定義されたサイトのsite
仕様にパッチを当て、サイトのcacheHtml
プロパティをtrue
に設定してそのサイトの HTML 出力キャッシュを有効にします。注記インストール中に設定された
website
デフォルト サイトがすでに存在します。自分で作成して HTML キャッシュを使用するサイトには、この設定を指定する必要があります。注記サイト ノードの
htmlCacheSize
プロパティで各キャッシュのサイズを指定できます。 -
Sitecore が出力をキャッシュするレンダリングにキャッシュ オプションを追加します。これには 2 つの方法があります。
-
1 つは、レンダリングを使用するたびにオプションを指定してローカルで追加する方法です。これには、コンテンツ エディターでアイテムを開き、[プレゼンテーション] タブで [詳細] をクリックしてオプションを設定するレンダリングをクリックします。
-
もう 1 つは、レンダリングの定義アイテムでオプションを指定してグローバルに追加します。これは、このレンダリングのすべての使用に対するデフォルト設定です。これには、コンテンツ ツリーの sitecore/Layout/Renderings の部分にあるレンダリング定義アイテムを開き、[キャッシング] セクションのオプションに移動します。
オプションは次のとおりです。
-
キャッシュ可能
Sitecore がレンダリングをキャッシュするかどうかを指定します。
-
インデックス更新時に削除
Sitecore がコンテンツ検索インデックスを更新するときにキャッシュをクリアします。
これは、Sitecore インスタンスがコードを含むレンダリング、コントロール、サブレイアウトに HTML キャッシュを使用し、このコードがインデックスに依存している場合に重要です。詳細については、インデックスに依存する HTML キャッシュを参照してください。
-
データによって異なる
Sitecore はアクセスされたアイテムに基づいて出力をキャッシュします。これは、ヘッダーやフッターなど、コンテンツの一貫性が高い場合に役立ちます。
-
デバイスによって異なる
Sitecore がデバイスごとに個別に出力をキャッシュします。
-
ログインによって異なる
Sitecore が出力のコピーを 2 つキャッシュします。1 つは認証されたユーザー用で、もう 1 つは認証されていないユーザー用です。
-
パラメーターによって異なる
Sitecore がレンダリングの受け入れる各パラメーターの出力をキャッシュします。
-
クエリ文字列によって異なる
Sitecore がクエリ文字列パラメーターの一意の組み合わせごとに出力をキャッシュします。
-
ユーザーによって異なる
Sitecore が認証されたユーザーごとに出力をキャッシュします。
-
キャッシュ クリアの動作
この設定は、Sitecore のキャッシュ クリア動作とパブリッシュ操作とのリレーションを指定します。可能な値とその影響については次のセクションで説明します。
-
キャッシュ クリアの動作の設定
この設定は、コンテンツを更新およびパブリッシュするときに Sitecore がキャッシュをクリアする方法を指定します。設定できる値は 3 つあります。
-
パブリッシュ時にクリア
Sitecore がパブリッシュするたびにレンダリングのキャッシュをクリアします。これは、
cacheHtml
プロパティを true に設定したすべてのサイトに当てはまります。publish:end
イベント ハンドラーは、標準インストールでは次のように設定されています。RequestResponseshell<event name="publish:end"> <handler type="Sitecore.Publishing.SmartHtmlCacheClearer, Sitecore.Kernel" method="ClearCache" resolve="true" /> ... </event>
パブリッシュ時に Sitecore がサイトのキャッシュをクリアしないようにする場合は、次のように
preventHtmlCacheClear
属性をサイト定義に追加することができます。RequestResponseshell<site name="custom_website" cacheHtml="true" preventHtmlCacheClear="true" … />
-
コンテンツ更新時にクリア
これは最も複雑なシナリオであり、別のセクションで説明しています。
-
クリアしない
Sitecore がパブリッシュ時に出力キャッシュをクリアしません。
[コンテンツ更新時にクリア] オプションの使用
[キャッシュ クリアの動作] の設定値として指定すると、Sitecore は、関連するコンテンツが変更された場合にのみ、このレンダリングの出力キャッシュをクリアします。これは、cacheHtml
プロパティと enablePartialHtmlCacheClear
プロパティの両方を true
に設定するすべてのサイトに適用されます。
enablePartialHtmlCacheClear
を false に設定したサイトでは、このオプションは無視され、Sitecore はすべてのパブリッシュでレンダリング キャッシュをクリアします。オプションは、レンダリングの [コンテンツの依存関係] フィールドの値を使用します。Sitecore は、このフィールドの値に基づいてすべてのコンテンツの依存関係をレンダリング キャッシュ キーと対応させるマップをメモリに保持します。(ローカルで、またはリモート データベースで) コンテンツが変更されると、Sitecore はマップを確認して関連するすべてのキャッシュ エントリをクリアします。
次のハンドラーは、標準インストールの item:saved,item:saved:remote
、item:deleted
、item:deleted:remote
のイベントに対して設定されます。
<handler type="Sitecore.Publishing.PartialHtmlCacheClearer, Sitecore.Kernel" method="OnItemEvent" resolve="true" />
詳細については、「MVC レンダリングのコンテンツの依存関係を設定する」を参照してください。
シナリオ例
この例は、次のようなアイテム構成がある場合の動作を示しています。
また、コンテンツ アイテム をデータ ソースとして使用する単一のレンダリングが含まれるページもあります。
次の表は、パブリッシュ時にこのレンダリングの出力キャッシュ クリアを発生させるアイテムと、これが [コンテンツの依存関係] フィールドで指定した値にどのように依存しているかを示しています。
コンテキストの依存関係の仕様 |
パブリッシュ時にキャッシュのクリアを発生させるアイテム |
備考 |
---|---|---|
|
|
何も指定しない場合は、データ ソース アイテムが使用されます。 |
|
|
コンテンツ アイテム アイテムは、キャッシュのクリアをトリガーしません。 |
|
| |
|
| |
|
| |
|
|
Sitecore が参照に Link データベースを使用します。 |
|
|
Sitecore が参照に Link データベースを使用します。 関連アイテムは、データ ソース アイテムに対してのみ計算されます。兄弟アイテムに対しては計算されません。 |
|
|
Sitecore が参照に Link データベースを使用します。 単独で使用する場合、[再帰関連アイテム] は [関連アイテム] と同じ結果になります。 |
|
|
Sitecore が参照に Link データベースを使用します。 [関連アイテム] とは異なり、[再帰関連アイテム] を [兄弟] などの他のオプションと一緒に使用した場合、Sitecore は、データ ソース自体ではなく他のオプションによって生成されたアイテムに対して参照を計算します。 |
|
| |
|
|
レンダリング定義アイテムがパブリッシュされると、キャッシュは自動的にクリアされます。これは、キャッシュがその設定とオプションによって常に最新であることを保証するためです。[コンテンツの依存関係] フィールドの値はこれに影響を与えません。
データ ソースが複数のデータ ソース アイテムを返すクエリである場合、Sitecore はすべてのデータ ソース アイテムに上記を適用します。