Commerce Engine のキャッシュ

Current version: 10.1

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

  • Redis - Redis キャッシュ プロバイダーは、統合、テスト、本番環境などの分散デプロイで使用するためのものです。デフォルトでは、Commerce Engine が Redis キャッシュを使用します。

  • メモリ - インメモリ キャッシュは、単一サーバーのデプロイおよび開発環境でのみ使用されます。

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

注記

Sitecore XC キャッシュはオプトイン モデルに従います。すなわち、Commerce エンティティと非エンティティに対してデフォルトでキャッシュが無効になっています。ポリシー設定を通じて、キャッシュする Commerce エンティティと非エンティティのキャッシュを明示的に有効にする必要があります。

分散キャッシュ

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

Redis を使用した分散キャッシュ用の Redis キャッシュ ストアを示す図。

メモリ キャッシュ

単一サービス デプロイの場合、メモリ キャッシュ プロバイダーを使用して Commerce アイテムをキャッシュできます。マシンでホストされているすべての Commerce Engine サービスロールは、メモリ キャッシュ ストアを使用して、要求ヘッダーで指定された環境 ID に基づいてキャッシュされたデータを取得します。

メモリ キャッシュと環境 ID。

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

キャッシュ プロバイダーの設定は Commerce Engine の config.json ファイルに保存されます。キャッシュ プロバイダーを 1 つ有効にする必要があり、一度に有効にできるキャッシュ プロバイダーは 1 つだけです。Redis キャッシュ プロバイダーはデフォルトで有効になっています。

RequestResponse
},
  "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"
    }
 }

次の表に、キャッシュ プロバイダーの設定パラメーターを一覧表示して説明します。

キャッシュ プロバイダー

パラメーター

デフォルト値

説明

メモリ

Enabled

false

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

CacheStoreName

Commerce-Memory-Store

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

EvictionPercentage

0.2

キャッシュが最も長い間使われていないエントリを削除して新しいエントリ用にスペースを確保するしきい値を設定します。

MaxSizeInBytes

9223372036854775807 (long.MaxValue)

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

PollingInterval

120

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

SizeLimit

Null (制限なし)

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

ExpirationScanFrequency

60

期限切れになったアイテムのスキャン間の最小時間を秒単位で設定します。

CompactionPercentage

0.05

最大サイズを超えたときに圧縮するキャッシュ データの割合を小数で設定します。

Redis

Enabled

true

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

CacheStoreName

Commerce-Redis-Store

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

intervalBetweenConnectionAttemptsInSeconds

60

失敗した接続が再接続を試行するまでの秒数を設定します。

redisConnectionPoolSize

1

接続プールに作成できる接続数を指定します。

redisCompressionEnabled

true

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

Configuration

PlaceholderForRedisConfiguration

Redis キャッシュ プロバイダーの接続文字列を指定します。

注記

特定のデプロイ要件を満たすために、追加の Redis 設定オプションを接続文字列に追加できます。

InstanceName

PlaceholderForRedisInstanceName

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

エンティティ キャッシュ設定

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

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

RequestResponse
{ 
  "$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

エンティティのキャッシュを有効または無効 (ブール値) にします。

Priority

Normal

キャッシュ エントリの優先度を設定します。可能な値は次のとおりです。

  • Low

  • Normal

  • High

  • NeverRemove

Expiration

86400000

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

AbsoluteExpirationRelativeToNow

300000

現在のタイムスタンプを基準にしてキャッシュ エントリが期限切れになるまでの期間をミリ秒単位で設定します。

SlidingExpiration

300000

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

HasNegativeCaching

False

エンティティ タイプのネガティブ キャッシュを有効または無効 (ブール値) にします。true に設定すると、エンティティが存在しないという事実がキャッシュされます。これにより、以前に要求されていて存在しないエンティティに対して何度も SQL Server が呼び出されることがなくなります。

CacheName

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

EntityIdPrefix

エンティティ タイプを識別するプレフィックス。

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

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 コマンドを示します。

コマンド

説明

GetCacheStores()

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

GetCacheStore(name)

名前が付けられたキャッシュ ストアを取得します。

GetDataCacheStore(name)

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

GetCache(name)

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

ClearCacheStore()

キャッシュ ストア内のすべてのキャッシュをクリアします。

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

ClearDataStoreCaches()

データ ストア内のすべてのキャッシュをクリアします。Commerce Engine は要求ヘッダーで指定された環境名からデータ ストアを決定します。

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

ClearCache(name)

キャッシュ ストア内の名前が付けられたキャッシュをクリアします。

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

Do you have some feedback for us?

If you have suggestions for improving this article,