1. 行政

コマースエンジンのキャッシュ

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

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

  • Redis - Redisキャッシュプロバイダーは分散展開、統合、テスト、本番環境での使用用です。デフォルトではCommerce EngineはRedisキャッシュを使用しています。

    !注Sitecore XC 10.2からは、RedisクラスターをCommerce EngineのキャッシュやCommerce Engine Connectキャッシュに使うことができます。

    Sitecore XCのデフォルト展開はスタンドアロンのRedisを使用しています。

  • Memory - インメモリキャッシュは、シングルサーバー展開および開発環境でのみ使用されます。

    !重要インメモリキャッシュはリリース10.2で廃止されSitecore XC、今後のリリースで削除されます。

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

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

分散キャッシュ

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

スタンドアロンのRedisの単一サーバーインスタンスには、CE ConnectキャッシュとCommerce Engineキャッシュの両方のキャッシュストアを含めることができます。CE ConnectキャッシュストアはDB0を使用します。Commerce EngineキャッシュストアはDB1を使用します。

Diagram showing Redis cache stores for distributed caching using Redis.

Redisクラスターによるキャッシュデータの高可用性

Sitecore XCのデフォルト展開はRedisをスタンドアロンで使用していますが、Sitecore XC 10.Sitecore 2からはRedis Clusterの基本的なサポートを提供し、キャッシュ性能の向上、フェイルオーバー、高可用性を実現しています。

Redisクラスターを使用するためにCommerce Engineのサイトで追加の設定は必要ありません。

Commerce EngineのキャッシュにはRedis Clusterを使い、CommerceのCommerce Engine ConnectキャッシュにはRedis StandaloneまたはRedis Clusterのいずれかを使えます。

Redis Clusterは、Redisのスタンドアロン版のように複数のデータベースをサポートしていません。データベース0のみで、SELECTコマンドは許可されていません。

メモリキャッシュ

!重要メモリキャッシュプロバイダーはリリース10.2で非推奨Sitecore XC、今後のリリースで削除される予定です。

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

The memory cache and environment 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": 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設定オプション を追加できます。

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ソリューションに含まれるすべてのデフォルト環境(例

)はデフォルトのキャッシュポリシーセットを参照しています。

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

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

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

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

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

キャッシュAPIコマンド

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

!注

  • Sitecore XC 10.2以降、CommerceOps APIサービスはAuthoringサービスを実行しているCommerce Engineインスタンスに対して動作するように設定されています。Sitecore XCデプロイメントではDevOpsのCommerce Engineインスタンスが作成されません。

  • インメモリキャッシュはSitecore XC 10.2で廃止され、今後のリリースで削除される予定です。

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

指揮

Postman サンプル

概要

GetCacheStores()

キャッシュストアを入手しましょう

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

GetCacheStore(name='Commerce-Redis-Store')

キャッシュストアを入手してください

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

GetDataCacheStore(name='Commerce-Redis-Store)

データキャッシュストアを取得

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

GetCache(name='Items')

キャッシュを入手してください

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

ClearCacheStore()

キャッシュストアのクリア(非推奨)

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

> [!注]
> このコマンドはインメモリキャッシュを目的としています。

ClearDataStoreCaches()

データストアキャッシュのクリア(非推奨)

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

> [!注]
> このコマンドはインメモリキャッシュを目的としています。

ClearCache()

キャッシュをクリアする

キャッシュストア内の名前付きキャッシュをクリアします。

> [!注]
> このコマンドはRedisやインメモリキャッシュ用に設計されています。

ClearCachesForArtifactStore()

ClearCachesForArtifactStore(Redisのみ)

ターゲット環境で指定されたアーティファクトストアIDを共有するすべてのキャッシュをクリアします。

ClearAllCaches()

ClearAllCaches(Redisのみ)

グローバル環境を含むすべての環境でデフォルトのCommerceキャッシュをクリアします。

> [!注]
>このコマンドはデフォルトのCommerce Engineキャッシュのみをクリアします。カスタムキャッシュをクリアするには、 redis-cliを使います。

この記事を改善するための提案がある場合は、 お知らせください!