---
title: "コマースエンジンのキャッシュ"
slug: "commerce-engine-caching"
abstract: ""
---
# コマースエンジンのキャッシュ

Sitecore XCソリューションは2つのキャッシュプロバイダーをサポートしています:

-   Redis - Redisキャッシュプロバイダーは分散展開、統合、テスト、本番環境での使用を目的としています。Commerce EngineはデフォルトでRedisキャッシュを使用します。
-   メモリ - インメモリキャッシュは単一サーバーのデプロイや開発環境でのみ使用されます。

各Commerce Engineのサービスロールにはキャッシュストアがあります。キャッシュストアには複数のキャッシュが含まれており、環境に関連付けられたアーティファクトストアIDに応じてデータキャッシュストアにグループ化されます。同じアーティファクトストアIDを持つ環境はキャッシュストア内で同じキャッシュデータを共有しますが、そのキャッシュデータは異なるアーティファクトストアIDを持つ環境から分離されています。

> !注Sitecore XCキャッシュは *オプトイン* モデルに従っており、商業関連エンティティおよび非エンティティに対してキャッシュはデフォルトで無効化されています。ポリシー設定を通じてキャッシュしたい商業エンティティおよび非エンティティに対して明示的にキャッシュを有効にしなければなりません。

## 分散キャッシュ

スケールド(または分散型、シングルサーバー)展開の場合、Redisキャッシュプロバイダーを使ってシステムの集中型キャッシュストアをホストできます。各Commerce Engineサービスロールは、リクエストヘッダーで指定された環境IDに基づいてキャッシュストアにアクセスし、キャッシュデータを取得できます。

![Diagram showing Redis cache stores for distributed caching using Redis.](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/101/sitecore-experience-commerce/images/DevOps_Distributed_caching_9_2__Updated.png)

## メモリキャッシュ

単一サービスの展開では、Memory cache providerを使ってコマースアイテムをキャッシュできます。マシン上でホストされているすべてのCommerce Engineサービスロールは、リクエストヘッダーで指定された環境IDに基づいてキャッシュデータを取得するためにメモリキャッシュストアを使用します。

![The memory cache and environment ID.](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/101/sitecore-experience-commerce/images/Memory-Caching.png)

## キャッシュプロバイダーの設定

キャッシュプロバイダーの設定はCommerce Engineのconfig.jsonファイルに保存されます。1つのキャッシュプロバイダーを有効にする必要があり、同時に1つのキャッシュプロバイダーしか有効にできません。Redisキャッシュプロバイダーはデフォルトで有効化されています。

},
 "Caching": {
 "Memory": {
 "Enabled": false,
 "CacheStoreName": "Commerce-Memory-Store"
 },
 "Redis": {
 "Enabled": true,
 "CacheStoreName": "Commerce-Redis-Store",
 "IntervalBetweenConnectionAttemptsInSeconds": 60,
 "RedisConnectionPoolSize": 1,
 "RedisCompressionEnabled": true,
 "Options": {
 "Configuration": "PlaceholderForRedisConfiguration",
 "InstanceName": ""PlaceholderForRedisInstanceName"
 }
 }

以下の表はキャッシュプロバイダーの設定パラメータを一覧と説明しています:

キャッシュプロバイダー

パラメータ

デフォルト値

概要

**記憶**

Enabled

false

キャッシュプロバイダーが有効かどうか(ブール)を指定します。

CacheStoreName

Commerce-Memory-Store

キャッシュストアの名前を設定します。

EvictionPercentage

0.2

キャッシュが最近最も使用頻度の低いエントリを削除し、新しいエントリのためにスペースを作る閾値を設定します。

MaxSizeInBytes

9223372036854775807 (long.MaxValue)

キャッシュストアで許可される最大バイトサイズを設定します。

PollingInterval

120

キャッシュストアがメモリ統計を更新するまでの最大時間を秒単位で設定します。

SizeLimit

Null (無制限)

キャッシュストアの最大アイテム数を設定します。値が指定されていない場合、制限はキャッシュ内で許容される最大サイズ( MaxSizeInBytes 値によって決まります)に基づいています。

ExpirationScanFrequency

60

期限切れアイテムのスキャン間の最小時間(秒単位)を設定します。

CompactionPercentage

0.05

最大サイズを超えるとキャッシュデータのパーセンテージ(小数点で表す)をコンパクトに設定します。

**レディス**

Enabled

true

Redisキャッシュプロバイダーが有効かどうかを指定します(ブール)。

CacheStoreName

Commerce-Redis-Store

キャッシュストアの名前を設定します。

intervalBetweenConnectionAttemptsInSeconds

60

接続に失敗した際に再接続を試みる秒数を設定します。

redisConnectionPoolSize

1

接続プールで作成可能な接続数を指定します。

redisCompressionEnabled

true

キャッシュデータを圧縮するかどうかを指定します。

Configuration

PlaceholderForRedisConfiguration

Redisキャッシュプロバイダーの接続文字列を指定します。  
  
\> \[!注\]  
\> 特定のデプロイメント要件を満たすために、接続文字列に追加の [Redis設定オプション](https://stackexchange.github.io/StackExchange.Redis/Configuration.html#configuration-options) を追加できます。

InstanceName

PlaceholderForRedisInstanceName

Redisのインスタンス名を設定します。

## エンティティキャッシュ構成

Commerce Coreプラグインは、Commerce Engineのエンティティキャッシュを規制するポリシーを提供します。

Commerce Coreプラグインで定義されたEntityCachingPolicyポリシーは、コマースエンティティのキャッシュ動作を制御します。キャッシュしたい各エンティティごとにエンティティキャッシュポリシーを設定することができます。以下はエンティティSitecore.Commerce.Plugin.Content.ContentPathのキャッシュ設定を定義するEntityCachingPolicyの例を示しています:

{
 "$type": "Sitecore.Commerce.Core.EntityCachingPolicy, Sitecore.Commerce.Core",
 "EntityFullName": "Sitecore.Commerce.Plugin.Content.ContentPath",
 "AllowCaching": true,
 "Priority": "Normal",
 "Expiration": 86400000,
 "HasNegativeCaching": true,
 "CacheName": "ContentPaths",
 "EntityIdPrefix": "Entity-ContentPath"
}

以下の表はエンティティキャッシュポリシー構成のパラメータを示しています:

パラメータ

デフォルト値

概要

EntityFullName

Sitecore.Commerce.Plugin.Content.ContentPath

キャッシュするエンティティタイプのフルネームを設定します。

AllowCaching

true

エンティティのキャッシュを有効化または無効化(bool)します。

Priority

Normal

キャッシュエントリの優先度を設定します。可能な値は以下の通りです:  
  

-   低め
-   ノーマル
-   ハイ
-   絶対に削除しない

Expiration

86400000

キャッシュエントリが期限切れになるまでの時間(ミリ秒単位)を設定します。

AbsoluteExpirationRelativeToNow

300000

キャッシュエントリが現在のタイムスタンプに対して失効する時間(ミリ秒単位)を設定します。

SlidingExpiration

300000

キャッシュエントリがアクセスされなかった場合に期限が切れるまでの時間をミリ秒単位で設定します。

HasNegativeCaching

False

エンティティタイプに対してネガティブキャッシュを有効化または無効化(bool)します。trueに設定すると、エンティティが存在しない事実をキャッシュし、以前にリクエストされたエンティティが存在しないにもかかわらず、繰り返しSQL Serverに呼び出すのを防ぎます。

CacheName

このエンティティタイプのキャッシュ名を設定します。

EntityIdPrefix

エンティティタイプを識別するための接頭辞です。

## キャッシュポリシーセット

Sitecore XCソリューションには、システムキャッシング設定を含むキャッシングポリシーセットファイルが含まれています。Sitecore XCソリューションに含まれるすべてのデフォルト環境(例:Habitat)はデフォルトのキャッシュポリシーセットを参照しています。

Plugin.Caching.PolicySet-1.0.0.jsonファイルは*wwwroot\\data\\Environments*フォルダに保存され、商取引事業者および非事業者向けのキャッシュポリシーを含みます。

キャッシュポリシーセットには、以下のコマースエンティティキャッシュのポリシー構成が含まれています:

-   コンテンツパスキャッシュ
-   コンテンツアイテムキャッシュ
-   ショップのキャッシュ
-   ポリシーセットキャッシュ
-   エンティティインデックスキャッシュ
-   プロモーションキャッシュ
-   プロモーションブックのキャッシュ
-   カタログキャッシュ
-   カテゴリキャッシュ
-   関係定義キャッシュ
-   販売可能なアイテムキャッシュ
-   インベントリセットキャッシュ
-   プライスカードキャッシュ
-   プライスブックのキャッシュ
-   ローカライゼーションエンティティキャッシュ
-   バージョン管理エンティティキャッシュ
-   ワークフローキャッシュ
-   Search Statuses キャッシュ

さらに、キャッシュポリシーセットには以下の非エンティティ項目のキャッシュポリシー構成が含まれています:

-   管理キャッシュ(Commerce Control Panelからアイテムモデルオブジェクトをキャッシュ)
-   カスタムリレーションシップキャッシュ(カスタムリレーションシップのリストをキャッシュ)
-   関連/非関連カタログキャッシュ(各プロモーション書籍の関連カタログと非関連カタログのリストをキャッシュ)
-   ローカライズされた用語キャッシュ(商取引のローカライズされた用語のリストをキャッシュする)
-   カスタマーステータスキャッシュ(ローカライズされた顧客ステータスのリストをキャッシュ)
-   キャッシュポリシーの返品(返品理由のローカライズリストをキャッシュする)

## キャッシュAPIコマンド

キャッシュ管理はCommerceOps APIで行います。 *SitecoreCommerce\_DevOps*コレクションにあるPostmanサンプルを使ってキャッシュコマンドを実行できます。

以下の表はキャッシュ用のAPIコマンドを示しています:

指揮

概要

GetCacheStores()

システム内のすべてのキャッシュストアを取得します。

GetCacheStore(name)

名前付きのキャッシュストアを取得します。

GetDataCacheStore(name)

環境のアーティファクトストアIDに一致するキャッシュストア内のキャッシュを取得します。

GetCache(name)

名前付きキャッシュを取得します。キャッシュストアにキャッシュが存在しない場合、システムは404エラーを返します。

ClearCacheStore()

キャッシュストア内のすべてのキャッシュをクリアします。  
  
このコマンドはRedisのキャッシュプロバイダーではサポートされていません。キャッシュストアはRedisで直接クリアする必要があります。

ClearDataStoreCaches()

データストア内のすべてのキャッシュをクリアします。コマースエンジンはリクエストヘッダーで指定された環境名からデータストアを決定します。  
  
このコマンドはRedisキャッシュプロバイダーにはサポートされていません。Redisで直接データストアをクリアする必要があります。

ClearCache(name)

キャッシュストア内の名前付きキャッシュをクリアします。  
  
このコマンドはRedisキャッシュプロバイダーではサポートされていません。Redisで直接キャッシュをクリアする必要があります。