コンポーネントと GraphQL のキャッシュのクリア clear-cache
このドキュメントでは、AEM CIF のキャッシュ消去機能を有効にし、検証するための包括的なガイドを提供します。
CIF 設定でのキャッシュ消去機能の有効化 enable-clear-cache
デフォルトでは、CIF 設定でキャッシュ消去機能は無効になっています。有効にするには、対応するプロジェクトに以下を追加する必要があります。
-
サーブレットの
/bin/cif/invalidate-cache
を有効にします。これにより、以下に示すように、プロジェクトにcom.adobe.cq.cif.cacheinvalidation.internal.InvalidateCacheNotificationImpl.cfg.json
設定を追加して、対応するリクエストで clear-cache API をトリガーできます こちら。note note NOTE 設定は、オーサーインスタンスに対してのみ有効にする必要があります。 -
次に示すように、リスナーを有効にして、プロジェクトに
com.adobe.cq.commerce.core.cacheinvalidation.internal.InvalidateCacheSupport.cfg.json
設定を追加することにより、AEM(公開およびオーサー)の各インスタンスからキャッシュをクリアします 🔗。-
設定は、オーサーインスタンスとパブリッシュインスタンスの両方で有効にする必要があります。
-
Dispatcher のキャッシュを有効にする(オプション):上記の設定で
enableDispatcherCacheInvalidation
プロパティを true に設定することで、Dispatcher のキャッシュの消去設定を有効にできます。これにより、Dispatcher からキャッシュを消去する機能が提供されます。note note NOTE これは、パブリッシュインスタンスでのみ機能します。 -
また、製品、カテゴリ、CMS ページに適したパターンを上記の設定ファイルに追加して、Dispatcher キャッシュから削除する必要があります。
-
-
製品およびカテゴリに関連する対応するページを見つけるための SQL クエリのパフォーマンスを向上させるには、プロジェクトに対応するインデックスを追加します(推奨)。詳しくは、cifCacheInvalidationSupport を参照してください。
キャッシュ消去機能の確認 verify-clear-cache
すべてが正しく設定されていることを確認するには、以下を行います。
- 対応するサーブレットをオーサーインスタンスのAEMにトリガーします(例:http://localhost:4502/bin/cif/invalidate-cache。200 HTTP 応答が返されます。
- ノードがオーサーインスタンスの次のパス
/var/cif/cacheinvalidation
に作成されていることを確認します。ノード名は、パターン「cmd_{{timestamp}}
」に従います。 - 各パブリッシュインスタンスで同じノードが作成されていることを確認します。
次に、キャッシュが正しく消去されているかどうかを確認します。
-
対応する PLP および PDP ページに移動します。
-
コマースエンジンの製品名またはカテゴリ名を更新します。変更内容は、キャッシュの設定に基づいて AEM にすぐに反映されるわけではありません。
-
次に示すように、サーブレット API をトリガーします。
code language-none curl --location '{Author AEM Instance Url}/bin/cif/invalidate-cache' \ --header 'Content-Type: application/json' \ --header 'Authorization: ******' \ // Mandatory --header 'Cookie: private_content_version=0299c5e4368a1577a6f454a61370317b' \ --data '{ "productSkus": ["Sku1", "Sku2"], // Optional: Pass the corresponding sku which got updated. "categoryUids":["CategoryUid"], // Optional : Pass the corresponding category-uid which got updated. "storePath": "/content/venia/us/en", // Mandatory : Needs to be given to know for which site we are removing the clear cache. }'
すべてが正常に動作すると、新しい変更がすべてのインスタンスに反映されます。パブリッシュインスタンスで変更が表示されない場合は、プライベート/匿名ブラウザーウィンドウで関連する PLP および PDP ページにアクセスしてみてください。
キャッシュ無効化 API の消去 clear-cache-api
これは、AEM からコマース関連データのキャッシュを消去する必要がある場合にトリガーする必要がある API です。
リクエストタイプ:POST
ヘッダー headers
Content-Type
application/json
Authorization
ペイロード payload
次の表に、この機能が標準で提供する既存の属性を示します。これらの InvalidateType
プロパティは、必須属性(storePath
など)と組み合わせて指定する必要があります。
invalidateType
productSkus
次のパターン"\"sku\":\\s*\""
Dispatcher
を使用して、内部メモリからキャッシュを消去します
- 対応する SKU の PDP ページキャッシュを消去します
- 対応するカテゴリページのキャッシュを消去します(コマースからの GraphQL 応答に基づく)
- 次のクエリに基づいてキャッシュを消去します。
SELECT content.[jcr:path] FROM [nt:unstructured] AS content<br>WHERE ISDESCENDANTNODE(content, '{storePath}')<br>AND ( (content.[product] IN ('sku1','sku2') AND content.[productType] = 'combinedSku')<br> OR (content.[selection] IN ('sku1','sku2') AND content.[selectionType] IN ('combinedSku', 'sku')))
categoryUids
次のパターン"\"uid\"\\s*:\\s*\\{\"id\"\\s*:\\s*\""
Dispatcher
を使用して、内部メモリからキャッシュを消去します
- 対応するデータ(その子カテゴリページを含む)のカテゴリページのキャッシュを消去します
- 対応するカテゴリを持つすべての PDP ページを消去します
- 次のクエリに基づいてキャッシュを消去します。
SELECT content.[jcr:path] FROM [nt:unstructured] AS content<br>WHERE ISDESCENDANTNODE(content,'{storePath}')<br>AND ((content.[categoryId] in ('category1','category2')<br>AND content.[categoryIdType] in ('uid'))<br>OR (content.[category] in ('category1','category2') AND content.[categoryType] in ('uid')))
regexPatterns
cacheNames
invalidateAll
この表は、すべての API 呼び出しで渡す必要がある必須プロパティを示しています。
storePath
/content/venia/us/en
)。invalidateType.
の組み合わせで指定する必要がありますAPI リクエストのサンプル sample-request
curl --location 'https://author-p10603-e145552-cmstg.adobeaemcloud.com/bin/cif/invalidate-cache' \
--header 'Content-Type: application/json' \
--header 'Authorization: ******' \
--header 'Cookie: private_content_version=0299c5e4368a1577a6f454a61370317b' \
--data '{
"productSkus": ["VP01", "VT10"], // This will clear cache for the corresponding pages related with mentioned skus.
"categoryUids":["Mjk="], // This will clear cache for the corresponding pages related with mentioned categories.
"regexPatterns":["\"uid\"\\s*:\\s*\\{\"id\"\\s*:\\s*\"(Mjk=)\"", "\"sku\":\\s*\"(VP02|VP03)\""],
"cacheNames": ["venia/components/commerce/product"], // If this been added then it will clear respective caches for the corresponding storepath
"storePath": "/content/venia/us/en"
}'
拡張機能 clear-cache-extensibility
この機能は、そのコア機能を提供するだけでなく、拡張性も提供するので、開発者は必要に応じて構築し、さらにカスタマイズできます。
既存の属性の拡張 existing-attribute
既存の属性ベースの機能(categoryUids
など)で現在対応していないキャッシュを消去する必要がある場合は、この参照ファイルを参照して、新しいパターンを追加し、現在の実装で処理できる範囲を超えてキャッシュから消去する必要がある追加の invalidatePaths
を定義できます。
新しいカスタム属性の追加 new-custom-attribute
例えば、既存の属性をキャッシュの消去に使用しない場合は、独自の属性を柔軟に作成し、対応する機能を定義できます。