---
title: "プリフェッチキャッシュの最適化または無効化"
slug: "optimize-or-disable-the-prefetch-caches"
abstract: "Content DeliveryおよびContent ManagementのPrefetchキャッシュの最適化または無効化方法。"
---
# プリフェッチキャッシュの最適化または無効化

適用対象

Content Delivery、Content Management

プリフェッチキャッシュはアプリケーション起動時に最初に埋められ、アプリケーションのライフ期間中も充填され続けます。プリフェッチする項目のリストは、<wwwroot>/App\_Config/Prefetch/ フォルダ内の設定ファイルで各データベースごとに定義されています。

> !注プリフェッチキャッシュの初期集団の最適化および無効化については、「 [アプリケーション再起動後のコアデータベースの過剰負荷](https://kb.sitecore.net/articles/290593) 」記事をご覧ください。

プリフェッチしすぎるとSQLサーバーの負荷が増え、アプリケーションの起動時間が低下することがあります。これを避けるために、以下の方法があります:

-   プリフェッチキャッシュの初期人口を最適化します。
-   プリフェッチキャッシュの初期人口を無効にしてください。

## プリフェッチキャッシュの初期人口を最適化する

Prefetchキャッシュの初期人口を最適化するには、最も頻繁にアクセスされるアイテムのみを含めることができます。

以下の要素を使って、どの項目が含まれているかを判断してください:

要素

概要

複数の要素が許可されています

<template>

この要素には、特定のテンプレートに基づくすべてのアイテムが含まれます。

はい

<item>

この要素には指定された項目が含まれます。

はい

<children>

この要素には指定された項目の子項目が含まれます。

はい

<childLimit>

この要素は、各親項目に対してキャッシュできる子項目の数を制限します。

いいえ

以下はプリフェッチキャッシュの設定要素を含むサンプルパッチファイルです。

<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/"
 xmlns:set="http://www.sitecore.net/xmlconfig/set/"
 xmlns:role="http://www.sitecore.net/xmlconfig/role/">
 <sitecore>
 <databases>
 <database id="web">
 <dataProviders>
 <param desc="headProvider">
 <dataProvider param1="$(id)">
 <prefetch hint="raw:AddPrefetch">
 <template desc="sample">{<template GUID="">}</template>
 <item desc="root">{<item GUID="">}</item>
 <children desc="main sections">{<item GUID="">}</children>
 <childLimit>100</childLimit>
 </prefetch>
 </dataProvider>
 </param>
 </dataProviders>
 </database>
 </databases>
 </sitecore>
</configuration>

### グループを使ってプリフェッチ要求を分割します

グループを使うことでプリフェッチキャッシュの初期処理を加速し、データベースのタイムアウト例外を防ぐことができます。

デフォルトでは、プリフェッチキャッシュの初期集団は単一のSQLリクエストとして実行されます。この初期集団を要素をグループ化することで複数の並列リクエストに分割できます。

group属性を使って要素をグループ化できます。group属性をtemplate、item、children属性と組み合わせて使うことができます。

同じグループと要素タイプの要素は一緒にプリフェッチされます。要素のgroup属性が指定されていない場合は、デフォルトのグループが使用されます。

以下は、2つの別々のリクエストが並行して実行されるuiグループとdictionaryグループをプリフェッチしたサンプルです。

<template group="ui" desc="tool button new line">{6400BD3F-E8A1-4C38-8319-131448492439}</template>   
<template group="ui" desc="toolbar">{3A1A3B48-3434-4E5A-8F05-AD6E1687D888}</template>   
<template group="dictionary" desc="dictionary folder">{267D9AC7-5D85-4E9D-AF89-99AB296CC218}</template>   
<template group="dictionary" desc="dictionary entry">{6D1CD897-1936-4A3A-A511-289A94C2A7B1}</template>

## プリフェッチキャッシュの初期人口を無効化してください

Prefetchキャッシュの初期人口を無効にしても、訪問者がアイテムにアクセスする際には依然として埋め込まれます。

初期人口を無効化するには:

1.  configuration/sitecore/databases/database/dataProviders/dataProvider/prefetch要素の下にあるすべての要素を<patch:delete />要素に置き換えます。
    
2.  以下のグローバル要素で新しい <prefetch> 要素を追加します:
    
    -   要素:説明
    -   <cacheSize>: この要素 [は最大初期プリフェッチキャッシュサイズを設定します](https://doc.sitecore.com/xp/ja/developers/103/platform-administration-and-architecture/configure-prefetch-cache-values.html)。指定されていない場合は、 Caching.DefaultDataCacheSize 設定の値にデフォルトで設定されます。
    -   <childLimit>: この要素は、各親項目ごとにキャッシュできる子項目の数を制限します。
    -   <logStats>: この要素がtrueに設定された場合、高度な診断情報は次のように記録されます:
    
    Count: <number of added items>, Template: <template GUID>
    

以下はプリフェッチキャッシュの設定要素を含むサンプルパッチファイルです。

<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/"
 xmlns:set="http://www.sitecore.net/xmlconfig/set/"
 xmlns:role="http://www.sitecore.net/xmlconfig/role/">
 <sitecore>
 <databases>
 <database id="web">
 <dataProviders>
 <param desc="headProvider">
 <dataProvider param1="$(id)">
 <prefetch hint="raw:AddPrefetch">
 <patch:delete />
 </prefetch>
 <prefetch hint="raw:AddPrefetch">
 <cacheSize>1000MB</cacheSize>
 <childLimit>100</childLimit>
 <logStats>false</logStats>
 </prefetch>
 </dataProvider>
 </param>
 </dataProviders>
 </database>
 </databases>
 </sitecore>
</configuration>