---
title: "HTMLキャッシュの設定"
slug: "configure-html-caching"
abstract: "HTML出力キャッシュを有効にしてウェブサイトのパフォーマンスを向上させる方法、Sitecoreがキャッシュするレンダリングのキャッシュオプションも含めて。"
---
# HTMLキャッシュの設定

HTMLキャッシュはレンダリングをキャッシュする出力キャッシュで、ページ全体をキャッシュするものではありません。HTMLキャッシュはウェブサイトのパフォーマンス向上に使います。

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

1.  \\App\_Config\\Sitecore\\CMS.Core\\Sitecore.Sites.configファイルのsitesノードであらかじめ定義されたサイトのsite仕様をパッチし、サイトのcacheHtmlプロパティをtrueに設定して、そのサイトのHTML出力キャッシュを有効にします。
    
    > !注インストール時に設定されたwebsiteデフォルトのサイトはすでに存在しています。この設定は、自分で作成しキャッシュをHTMLしたいサイトごとに指定する必要があります。
    
    > !注各キャッシュのサイズは、サイトノードのhtmlCacheSizeプロパティで指定できます。
    
2.  Sitecoreがキャッシュ出力するレンダリングにキャッシュオプションを追加してください。これを行う方法は2通りあります:
    
    -   レンダリングを使うたびにオプションを指定することでローカルでできます。これを行うには、コンテンツエディターでアイテムを開き、 **プレゼンテーション** タブで **「詳細**」をクリックし、オプションを設定したいレンダリングをクリックしてください。
    -   レンダリングの定義項目でオプションを指定することで、グローバルにできます。これがこのレンダリングのすべての用途のデフォルト設定となります。これを行うには、コンテンツツリーの *sitecore/Layout/Renderings* 部分でレンダリング定義アイテムを開き、 **キャッシュ** セクションのオプションに移動してください。
    
    選択肢は以下の通りです:
    
    -   キャッシュ可能
        
        Sitecoreがレンダリングをキャッシュするかどうかを指定します。
        
    -   インデックス更新はクリア
        
        Sitecoreはコンテンツ検索インデックスを更新する際にキャッシュをクリアします。
        
        これは、Sitecoreインスタンスがレンダリング、コントロール、またはコードを含むサブレイアウトにHTMLキャッシュを使用している場合に重要です。このコードはインデックスに依存しています。詳細は「 [インデックス依存HTMLキャッシュ](https://doc.sitecore.com/xp/en/developers/104/platform-administration-and-architecture/index-dependent-html-caching.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" … />
    
-   内容のクリアアップデート
    
    これは最も複雑なシナリオであり、[別のセクション](https://doc.sitecore.com/xp/ja/developers/103/sitecore-experience-manager/configure-html-caching.html#UUID-31115594-dc75-a61b-8574-1aa332c98518_section-idm232136386794561 "Using the Clear On Content Update option")で説明されています。
    
-   クリアしない
    
    Sitecoreは公開時に出力キャッシュをクリアしません。
    

### コンテンツ更新をクリアするオプションの使用

これをキャッシュクリーニング振る舞い設定の値として指定すると、関連するコンテンツが変わった場合にのみ、このレンダリングの出力キャッシュがSitecore消去されます。これは、cacheHtmlプロパティとenablePartialHtmlCacheClearプロパティの両方をtrueに設定したすべてのサイトで当てはまります。

サイトをenablePartialHtmlCacheClearをfalseに設定すると、このオプションは無視され、Sitecoreすべての公開時にレンダリングキャッシュをクリアします。このオプションはレンダリングの**Content Dependencies**フィールドの値を使います。このフィールドの値に基づいて、Sitecoreはすべてのコンテンツ依存関係をレンダリングキャッシュキーと関連付けるマップをメモリ上で維持します。コンテンツが(ローカルまたはリモートデータベースで)変更されると、Sitecoreマップを見て関連するすべてのキャッシュエントリをクリアします。

以下のハンドラーは、標準インストールにおけるitem:saved,item:saved:remote、item:deleted、item:deleted:remoteイベントに対して設定されています。

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

[MVCレンダリングのためのコンテンツ依存関係の設定](https://doc.sitecore.com/xp/ja/developers/103/sitecore-experience-manager/configure-content-dependencies-for-an-mvc-rendering.html "Configure content dependencies for an MVC rendering") には、さらに詳しい情報があります。

#### 例シナリオ

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

![Item hierarchy](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/103/sitecore-experience-manager/images/Picture1.png)

また、*Content Item*をデータソースとして使う単一のレンダリングページもあります。

以下の表は、公開時に出力キャッシュがクリアされる項目と、**コンテンツ依存** フィールドで指定した値にどのように依存するかを示しています。

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

公開時にキャッシュクリアを引き起こすアイテム

注記

-   *Content Item*

何も指定しなければ、データソースの項目が使われます。

-   *Sitecore*
-   *Content*
-   *Home*

*Content Item*アイテムはキャッシュクリアをトリガーしません。

-   *Home*

-   *Sibling Item*

-   *Home*
-   *Sibling Item*

-   *Content Item*
-   参照されたすべての項目は *Content Item*

Sitecoreは参照のためにLinkデータベースを使用しています。

-   *Sibling Item*
-   参照されたすべての項目は *Content Item*

Sitecoreは参照のためにLinkデータベースを使用しています。  
  
関連項目はデータソース項目のみで計算され、兄弟項目については計算されません。

-   *Content Item*
-   参照されたすべての項目は *Content Item*

Sitecoreは参照のためにLinkデータベースを使用しています。  
  
単独で使用すると、再**帰関連項目**と同様の結果が得られます。

-   *Sibling Item*
-   すべてのアイテムの参考文献 *Sibling Item*

Sitecoreは参照のためにLinkデータベースを使用しています。  
  
**関連項目**とは異なり、**再帰関連項目**は兄弟項目などの他のオプションと組み合わせて使用される**場合、**Sitecoreはデータソース自体ではなく、そのオプションによって生成される項目と照らして参照を計算します。

-   *Child Item*

-   *Child Item*
-   *Descendant Item*

レンダリング定義項目が公開されるとキャッシュは自動的にクリアされます。これはキャッシュが常に設定やオプションを最新の状態に保ち、**Content Dependencies**フィールドの値がこれに影響しないようにするためです。

データソースが複数のデータソース項目を返すクエリの場合、Sitecoreはすべてのデータソース項目に対して上記の条件を適用します。

## パーソナライズとHTMLキャッシュ

> !重要パーソナライズルールを使用するレンダリングでHTMLキャッシュを有効にしないでください。パーソナライズとHTMLキャッシュの組み合わせはSitecore XP 9.2以降ではサポートされていません。

レンダリングでHTMLキャッシュが有効になると、Sitecoreは最終的なレンダリングマークアップを保存し、その後のリクエストで再利用します。キャッシュされた出力が直接提供されるため、パーソナライズルールはリクエストごとに再評価されず、本番環境でのパーソナライズ動作が一貫性や誤った動作を引き起こします。

このトピックで説明するキャッシュオプションのいずれも、HTMLキャッシュをパーソナライズルールと互換性のあるものにはしません。これらのオプションの組み合わせをいずれかの組み合わせで設定しても、リクエストごとのパーソナライズ条件の評価は復元されません。

パーソナライズルールを使用するレンダリングについては、HTMLキャッシュを無効にすることを推奨します。同じレンダリングが複数のページで使用され、そのうち一部のページだけがパーソナライズを使っている場合、レンダリング定義レベルで全体的に無効にするのではなく、影響を受けたページでキャッシュを無効にできます。これにより、パーソナライズが適用されていないページでもレンダリングがキャッシュされたままにできます。

特定のレンダリングインスタンスのキャッシュを無効にするには、エクスペリエンスエディターでページを開き、レンダリングを選択し、レンダリング設定のキャッシュ **可能な** チェックボックスをクリアしてください。