HTML キャッシュを設定する

概要

Sitecore が出力をキャッシュするレンダリングに対するキャッシュ オプションを含む HTML 出力キャッシュを有効にすることで、Web サイトのパフォーマンスを向上させる方法です。

HTML キャッシュは、ページ全体ではなく、レンダリングをキャッシュする出力キャッシュです。HTML キャッシュを使用すると Web サイトのパフォーマンスを向上させることができます。

HTML 出力キャッシュを有効にするには:

  1. \App_Config\Sitecore\CMS.Core\Sitecore.Sites.configファイルの sites ノードの事前定義されたサイトの site 仕様にパッチを当て、サイトのcacheHtml プロパティを trueに設定してそのサイトの HTML 出力キャッシュを有効にします。

    注記

    インストール中に設定された website デフォルト サイトがすでに存在します。自分で作成して HTML キャッシュを使用するサイトには、この設定を指定する必要があります。

    注記

    サイト ノードの htmlCacheSize プロパティで各キャッシュのサイズを指定できます。

  2. 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 イベント ハンドラーは、標準インストールでは次のように設定されています。

    <event name="publish:end">
    <handler type="Sitecore.Publishing.SmartHtmlCacheClearer, Sitecore.Kernel" method="ClearCache" resolve="true" />
    ...
    </event>

    パブリッシュ時に Sitecore がサイトのキャッシュをクリアしないようにする場合は、次のように preventHtmlCacheClear 属性をサイト定義に追加することができます。

    <site name="custom_website" cacheHtml="true" preventHtmlCacheClear="true" … />
  • コンテンツ更新時にクリア

    これは最も複雑なシナリオであり、別のセクションで説明しています。

  • クリアしない

    Sitecore がパブリッシュ時に出力キャッシュをクリアしません。

[コンテンツ更新時にクリア] オプションの使用

[キャッシュ クリアの動作] の設定値として指定すると、Sitecore は、関連するコンテンツが変更された場合にのみ、このレンダリングの出力キャッシュをクリアします。これは、cacheHtml プロパティと enablePartialHtmlCacheClear プロパティの両方を true に設定するすべてのサイトに適用されます。

enablePartialHtmlCacheClear を false に設定したサイトでは、このオプションは無視され、Sitecore はすべてのパブリッシュでレンダリング キャッシュをクリアします。オプションは、レンダリングの [コンテンツの依存関係] フィールドの値を使用します。Sitecore は、このフィールドの値に基づいてすべてのコンテンツの依存関係をレンダリング キャッシュ キーと対応させるマップをメモリに保持します。(ローカルで、またはリモート データベースで) コンテンツが変更されると、Sitecore はマップを確認して関連するすべてのキャッシュ エントリをクリアします。

次のハンドラーは、標準インストールの item:saved,item:saved:remoteitem:deleteditem:deleted:remote のイベントに対して設定されます。

<handler type="Sitecore.Publishing.PartialHtmlCacheClearer, Sitecore.Kernel" method="OnItemEvent" resolve="true" />

詳細については、「MVC レンダリングのコンテンツの依存関係を設定する」を参照してください。

シナリオ例

この例は、次のようなアイテム構成がある場合の動作を示しています。

アイテム階層

また、コンテンツ アイテム をデータ ソースとして使用する単一のレンダリングが含まれるページもあります。

次の表は、パブリッシュ時にこのレンダリングの出力キャッシュ クリアを発生させるアイテムと、これが [コンテンツの依存関係] フィールドで指定した値にどのように依存しているかを示しています。

コンテキストの依存関係の仕様

パブリッシュ時にキャッシュのクリアを発生させるアイテム

備考

オプションが選択されていません
  • コンテンツ アイテム

何も指定しない場合は、データ ソース アイテムが使用されます。

[祖先] オプションを選択
  • Sitecore

  • コンテンツ

  • ホーム

コンテンツ アイテム アイテムは、キャッシュのクリアをトリガーしません。

[親] オプションを選択
  • ホーム

[兄弟] オプションを選択
  • 兄弟アイテム

[親] オプションと [兄弟] オプションを選択
  • ホーム

  • 兄弟アイテム

[関連アイテム] オプションを選択
  • コンテンツ アイテム

  • コンテンツ アイテムによって参照されるすべてのアイテム

Sitecore が参照に Link データベースを使用します。

[兄弟] オプションと [関連アイテム] オプションを選択
  • 兄弟アイテム

  • コンテンツ アイテムによって参照されるすべてのアイテム

Sitecore が参照に Link データベースを使用します。

関連アイテムは、データ ソース アイテムに対してのみ計算されます。兄弟アイテムに対しては計算されません。

[再帰関連オプション] オプションを選択
  • コンテンツ アイテム

  • コンテンツ アイテムによって参照されるすべてのアイテム

Sitecore が参照に Link データベースを使用します。

単独で使用する場合、[再帰関連アイテム] は [関連アイテム] と同じ結果になります。

[兄弟] オプションと [再帰関連アイテム] オプションを選択
  • 兄弟アイテム

  • 兄弟アイテムによるすべてのアイテム参照

Sitecore が参照に Link データベースを使用します。

[関連アイテム] とは異なり、[再帰関連アイテム] を [兄弟] などの他のオプションと一緒に使用した場合、Sitecore は、データ ソース自体ではなく他のオプションによって生成されたアイテムに対して参照を計算します。

[子] オプションを選択
  • 子アイテム

[子孫] オプションを選択
  • 子アイテム

  • 子孫アイテム

レンダリング定義アイテムがパブリッシュされると、キャッシュは自動的にクリアされます。これは、キャッシュがその設定とオプションによって常に最新であることを保証するためです。[コンテンツの依存関係] フィールドの値はこれに影響を与えません。

データ ソースが複数のデータ ソース アイテムを返すクエリである場合、Sitecore はすべてのデータ ソース アイテムに上記を適用します。