Commerce Engine のキャッシュ
Sitecore XC ソリューションは、次の 2 つのキャッシュ プロバイダーをサポートしています。
-
Redis - Redis キャッシュ プロバイダーは、統合、テスト、本番環境などの分散デプロイで使用するためのものです。デフォルトでは、Commerce Engine が Redis キャッシュを使用します。
-
メモリ - インメモリ キャッシュは、単一サーバーのデプロイおよび開発環境でのみ使用されます。
各 Commerce Engine サービス ロールにはキャッシュ ストアがあります。キャッシュ ストアには複数のキャッシュが含まれており、環境に関連付けられているアーティファクト ストア ID に従って、データ キャッシュ ストアにグループ化されます。同じアーティファクト ストア ID を持つ環境はキャッシュ ストア内で同じキャッシュ データを共有しますが、それらのキャッシュ データは異なるアーティファクト ストア ID を持つ環境から独立しています。
Sitecore XC キャッシュはオプトイン モデルに従います。すなわち、Commerce エンティティと非エンティティに対してデフォルトでキャッシュが無効になっています。ポリシー設定を通じて、キャッシュする Commerce エンティティと非エンティティのキャッシュを明示的に有効にする必要があります。
分散キャッシュ
スケーリングされた (または分散された単一サーバー) デプロイの場合、Redis キャッシュ プロバイダーを使用してシステムの一元化されたキャッシュ ストアをホストできます。各 Commerce Engine サービス ロールは、要求ヘッダーで指定された環境 ID に基づいてキャッシュ ストアにアクセスし、キャッシュされたデータを取得できます。
メモリ キャッシュ
単一サービス デプロイの場合、メモリ キャッシュ プロバイダーを使用して Commerce アイテムをキャッシュできます。マシンでホストされているすべての Commerce Engine サービスロールは、メモリ キャッシュ ストアを使用して、要求ヘッダーで指定された環境 ID に基づいてキャッシュされたデータを取得します。
キャッシュ プロバイダー設定
キャッシュ プロバイダーの設定は 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": false,
"Options": {
"Configuration": "PlaceholderForRedisConfiguration",
"InstanceName": ""PlaceholderForRedisInstanceName"
}
}
次の表に、キャッシュ プロバイダーの設定パラメーターを一覧表示して説明します。
キャッシュ プロバイダー |
パラメーター |
デフォルト値 |
説明 |
---|---|---|---|
メモリ |
|
|
キャッシュ プロバイダーを有効にするかどうかを指定します (ブール値)。 |
|
|
キャッシュ ストアの名前を設定します。 | |
|
|
キャッシュが最も長い間使われていないエントリを削除して新しいエントリ用にスペースを確保するしきい値を設定します。 | |
|
|
キャッシュ ストアで許可される最大サイズをバイト単位で設定します。 | |
|
|
キャッシュ ストアがメモリの統計を更新するまでの最大時間を秒単位で設定します。 | |
|
|
キャッシュ ストアのアイテムの最大数を設定します。値が指定されていない場合、制限はキャッシュで許可される最大サイズ ( | |
|
|
期限切れになったアイテムのスキャン間の最小時間を秒単位で設定します。 | |
|
|
最大サイズを超えたときに圧縮するキャッシュ データの割合を小数で設定します。 | |
Redis |
|
|
Redis キャッシュ プロバイダーを有効にするかどうかを指定します (ブール値)。 |
|
|
キャッシュ ストアの名前を設定します。 | |
|
|
失敗した接続が再接続を試行するまでの秒数を設定します。 | |
|
|
接続プールに作成できる接続数を指定します。 | |
|
|
キャッシュされたデータを圧縮するかどうかを指定します。 | |
|
|
Redis キャッシュ プロバイダーの接続文字列を指定します。 注記 特定のデプロイ要件を満たすために、追加の Redis 設定オプションを接続文字列に追加できます。 | |
|
|
Redis インスタンス名を設定します。 |
エンティティ キャッシュ設定
Commerce Core プラグインは、Commerce Engine のエンティティ キャッシュを管理するポリシーを提供します。
EntityCachingPolicy
ポリシーは Commerce Core プラグインによって定義されており、コマース エンティティのキャッシュ動作を制御します。エンティティ キャッシュ ポリシーはキャッシュするエンティティごとに設定できます。以下に、エンティティ 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"
}
次の表に、エンティティ キャッシュ ポリシー設定のパラメーターを示します。
パラメーター |
デフォルト値 |
説明 |
---|---|---|
|
|
キャッシュするエンティティ タイプのフルネームを設定します。 |
|
|
エンティティのキャッシュを有効または無効 (ブール値) にします。 |
|
|
キャッシュ エントリの優先度を設定します。可能な値は次のとおりです。
|
|
|
キャッシュ エントリが期限切れになるまでの期間をミリ秒単位で設定します。 |
|
|
現在のタイムスタンプを基準にしてキャッシュ エントリが期限切れになるまでの期間をミリ秒単位で設定します。 |
|
|
アクセスされていない場合にキャッシュ エントリが期限切れになるまでの期間をミリ秒単位で設定します。 |
|
|
エンティティ タイプのネガティブ キャッシュを有効または無効 (ブール値) にします。true に設定すると、エンティティが存在しないという事実がキャッシュされます。これにより、以前に要求されていて存在しないエンティティに対して何度も SQL Server が呼び出されることがなくなります。 |
|
このエンティティ タイプに対するキャッシュの名前を設定します。 | |
|
エンティティ タイプを識別するプレフィックス。 |
キャッシュ ポリシー セット
Sitecore XC ソリューションには、システム キャッシュ設定が含まれるキャッシュ ポリシー セット ファイルが含まれています。Sitecore XC ソリューションに含まれるすべてのデフォルト環境 (Habitat など) は、デフォルトのキャッシュ ポリシー セットを参照します。
Plugin.Caching.PolicySet-1.0.0.json
ファイルは wwwroot \ data \ Environments フォルダーに保存されます。また、コマース エンティティと非エンティティのキャッシュ ポリシーが含まれています。
キャッシュ ポリシー セットには、次の Commerce エンティティのキャッシュのポリシー設定が含まれています。
-
コンテンツ パスのキャッシュ
-
コンテンツ アイテムのキャッシュ
-
Shopsのキャッシュ
-
ポリシー セットのキャッシュ
-
エンティティ インデックスのキャッシュ
-
プロモーションのキャッシュ
-
プロモーション ブックのキャッシュ
-
カタログのキャッシュ
-
カテゴリのキャッシュ
-
リレーションシップ定義のキャッシュ
-
販売可能アイテムのキャッシュ
-
在庫セットのキャッシュ
-
プライス カードのキャッシュ
-
プライス ブックのキャッシュ
-
ローカリゼーション エンティティのキャッシュ
-
バージョン管理エンティティのキャッシュ
-
ワークフローのキャッシュ
-
検索ステータスのキャッシュ
また、キャッシュ ポリシー セットには、次の非エンティティ アイテムのキャッシュ ポリシー設定が含まれています。
-
管理キャッシュ (Commerce コントロール パネルからアイテム モデル オブジェクトをキャッシュ)
-
カスタム リレーションシップ キャッシュ (カスタム リレーションシップのリストをキャッシュ)
-
関連付けられたカタログ/関連付けられていないカタログ キャッシュ (各プロモーション ブックの関連付けられたカタログと関連付けられていないカタログのリストをキャッシュ)
-
ローカライズされた用語のキャッシュ (commerce のローカライズされた用語のリストをキャッシュ)
-
顧客ステータスのキャッシュ (ローカライズされた顧客ステータスのリストをキャッシュ)
-
返品のキャッシュ ポリシー (ローカライズされた返品理由のリストをキャッシュ)
Caching API コマンド
CommerceOps API を介してキャッシュを管理します。Postman サンプル (SitecoreCommerce_DevOps コレクション) を使用してキャッシュ コマンドを実行できます。
次の表に、キャッシュ用の API コマンドを示します。
コマンド |
説明 |
---|---|
|
システム内のすべてのキャッシュ ストアを取得します。 |
|
名前が付けられたキャッシュ ストアを取得します。 |
|
環境のアーティファクト ストア ID に一致するキャッシュ ストア内のキャッシュを取得します。 |
|
名前が付けられたキャッシュを取得します。キャッシュがキャッシュ ストアに存在しない場合、システムは 404 エラーを返します。 |
|
キャッシュ ストア内のすべてのキャッシュをクリアします。 このコマンドは Redis キャッシュ プロバイダーではサポートされていません。Redis で直接キャッシュ ストアをクリアする必要があります。 |
|
データ ストア内のすべてのキャッシュをクリアします。Commerce Engine は要求ヘッダーで指定された環境名からデータ ストアを決定します。 このコマンドは Redis キャッシュ プロバイダーではサポートされていません。Redis で直接データ ストアをクリアする必要があります。 |
|
キャッシュ ストア内の名前が付けられたキャッシュをクリアします。 このコマンドは Redis キャッシュ プロバイダーではサポートされていません。Redis で直接キャッシュをクリアする必要があります。 |