Sitecoreプラットフォームは、パフォーマンスを最大化するために、複数レベルのキャッシュを搭載しています。アイテムの取得作業は、デフォルトでは、以下の複数のキャッシュ層によって補助されています:
プラットフォームのキャッシュ層のロジックは、Sitecore.Caching名前空間の下にあり、主なキャッシュ関連のロジックは、Sitecore.Abstractions.BaseCacheManagerコンストラクタまたはSitecore.Caching.CacheManager静的クラスにあります。
なお、CacheManagerが提供するClearAllCaches() APIは、以前に登録されたキャッシュをすべて削除するため、一時的にパフォーマンスの低下を引き起こす恐れがあります。使用すると、対応するログ エントリがSitecoreログ ファイルに出力されます:
WARN All caches have been cleared. This can decrease performance considerably.
Sitecore.Caching.ICacheInfoインターフェースは、より詳細なレベルでキャッシュをクリアできるClear() APIメソッドを定義しています。
Sitecoreプラットフォームは、キャッシュ削除の原因を突き止める診断機能を装備しています。
診断メッセージを書き込むようキャッシュ削除機構を設定するには、以下の手順を実施してください。
<setting name="Caching.DebugEnabled" value="true" />
<root> <priority value="DEBUG" /> </root>
キャッシュのクリーン アップのコール スタックを含むデバッグ ログ エントリを見つけることができます:
6080 2018:07:04 16:08:22 DEBUG The 'web[blobIDs]' cache has been cleared. Entries removed: 0 StackTrace: at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) at System.Environment.get_StackTrace() at Sitecore.Caching.Generics.Cache`1.DoLogDebugMessage(String messagePrefix, String messageBody, Boolean ensureDebugEnabled) in at Sitecore.Caching.Generics.Cache`1.Clear() at Sitecore.sitecore.admin.CacheAdmin.ClearAllButtonClick(Object sender, EventArgs arguments) at System.Web.UI.WebControls.Button.OnClick(EventArgs e) at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
調査完了後、設定変更を元に戻します。