非同期呼び出しとキャッシングについて
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
Commerce検索結果レンダリングは、非同期呼び出しとキャッシュを商品リスト レンダリングとは異なる方法で処理します。使用するレンダリングについて十分な情報に基づいた決定を下せるように、違い を理解することが重要です。
Commerce検索結果レンダリングは、最も柔軟性が高いため、使用することをお勧めします。
AJAX呼び出しをレンダリングするコマース検索結果
Commerce検索結果レンダリングは、標準のSXA検索結果レンダリングの拡張です。SXA検索結果レンダリングは、SXA Searchサービス を使用して、インデックスをクエリし、レンダリングするアイテムのリストを取得するAJAX呼び出しを行います。結果のアイテムは、設定されたレンダリングバリアントによってサーバー側で処理され、結果はHTMLマークアップとして返されます。
ProcessSearchItemsパイプラインは、SXA Search Serviceの拡張ポイントです。これは、構成されたスコープ クエリから返された項目を処理し、構成されたレンダリング バリアントがそれらをさらに処理する前に、関連するモデルを設定する役割を担います。このパイプラインを拡張して、Sitecoreアイテムを含むSearchItemパイプライン引数と、object型のカスタム モデルを設定できます。ProcessSearchItemsパイプラインは、PrepareSearchItemsと呼ばれるコマースプロセッサで拡張されます。このプロセッサは、Commerce Engineから価格と在庫の情報を取得し、データをProductSummaryViewModelに変換します。このモデルには、Commerce検索結果Scribanテンプレートからアクセスし、o_model変数を使用してコンテンツをレンダリングします。プロセッサがデータを実行して取得するかどうかは、構成とセットアップによって異なります。
ストアフロント設定 (/sitecore/Content/<tenant>/<site>/Settings/Commerce/Search Results Configuration) では、Commerce検索結果レンダリングで使用される呼び出しと、その呼び出しがいつ実行されるかを構成できます。 Use a separate AJAX call to retrieve price and stock infoチェック ボックスはデフォルトでオフになっており、レンダリングは1回呼び出しを行います。
この呼び出しの一部として、コマースProcessSearchItemsプロセッサは価格データと在庫データを実行して取得します。このデータは、レンダリングバリアントが処理されるときに価格と在庫情報を出力するためにScribanテンプレートで使用されます。
1回の呼び出しは、Content Delivery Network (CDN) を使用していない場合、パフォーマンスの観点から最も効率的な構成です。これは、マークアップ、価格、および株式情報を取得するために、クライアント ブラウザからAJAX呼び出しが1回だけ行われるためです。ただし、CDNを使用している場合は、価格と株式の情報もキャッシュすることに注意してください。価格と在庫は製品情報よりも頻繁に変更される傾向があるため、これは望ましくない場合があります。
商品やプライスカードの価格を直接変更する場合、またはCDNを使用してすでにキャッシュされている特定の商品のプロモーションを追加する場合、CDNキャッシュをXCから強制的にクリアする方法はありません。これは、個別に行うか、カスタムスクリプトの一部として、またはビジネスツールとのカスタム統合の一部として行う必要があります。このため、CDNを使用している場合は、2つのAJAX呼び出しを使用することをお勧めします。
Use a separate AJAX call to retrieve price and stock infoチェック ボックスをオンにすると、Commerce検索結果レンダリングは、カタログ アイテムのリストをレンダリングするときに、次の2つの非同期JavaScript呼び出しとAJAX呼び出しを行います。
-
最初の呼び出しでは、インデックスをクエリし、レンダリングする項目の一覧を取得します。Commerce検索結果レンダリングはSXA Search Serviceを呼び出し、アイテムをHTMLマークアップとして返し、レンダリング バリアントによってサーバー側で処理されます。Commerce ProcessSearchItemsプロセッサは、Commerce Engineを呼び出して価格データと在庫データを取得したり、ProductSummaryViewModelにデータを入力したりすることはありません。変動性の高い価格とステータスのデータは存在せず、カタログアイテムのリストと製品コンテンツは比較的安定しているため、CDNを使用する場合は、適切な有効期限でこの呼び出しをキャッシュすることをお勧めします。
-
2番目の呼び出しはコマース固有です。これは、カタログ品目のリストのマークアップを取得した後に発生し、製品のリストの価格と在庫情報を取得するためにCommerce Engineに対して行われます。データはJSON形式で返されます。
手記価格と在庫情報は頻繁に変更される可能性があるため、この呼び出しをキャッシュすることはお勧めしません。
この呼び出しは、最初の呼び出しと並行して行うことはできません。これは、そのクエリ パラメーターの1つであるProduct IDの一覧が、最初の呼び出しから取得した応答データに依存しているためです。この呼び出しは、製品IDのリストが入力され、空でなくなった場合にのみ行われます。価格と在庫情報を受け取ると、Knockout JSバインディングを使用してマークアップにバインドされ、それに応じて更新されます。価格情報と株式情報は、それぞれprice属性とstockLabel属性にバインドされます。2番目の呼び出しのJavaScriptコードは、/sitecore/Media library/Base Themes/Commerce Components Theme/Scripts/Catalog/catalog-commerce-search-results-model/に格納されているcatalog-commerce-search-results-modelスクリプトにあります。
最初の通話 - SXA Search Service AJAX通話
フルURL:http://host name/sxa/commercesearch/CommerceResults/?usedam= use images from DAM&l=language&s=scope&itemid=current item id& sig=search result signature&p=page size&o=sort order&v=rendering variant id
例: http://mqa-ts-02-dk1//sxa/commercesearch/CommerceResults/?usedam=true&l=en& s={9DCE2EF2-EE0C-4C02-B2ED-A8769FC08C3B}& itemid={994EC8CB-FE90-5071-A631-4458B1E83DB3}& sig=category-page& p=12& o=Display name,Ascending& v={175DC0A7-7214-450A-8765-688D62A551D1}
Httpメソッド: GET
次の表は、この呼び出しで使用されるパラメーターの詳細を示しています。
パラメーター |
使う |
---|---|
ウズンダム |
DAMから画像リンクを取得するか (「true」に設定されている場合)、または「false」に設定されている場合にメディアライブラリから画像リンクを取得するかを示す設定パラメータ。 |
|
結果の言語バージョンを指定します。 |
|
結果のフィルタリングに使用するスコープ項目を指定します。 |
アイテムID |
現在のコンテキスト アイテムID。 |
シグ |
コマース検索結果の署名。 |
|
ページ・サイズ。 |
|
特定のフィールドの結果の昇順または降順の順序。 |
|
バリアント定義ID。 |
2番目の呼び出し - GetSellableItemsSummary AJAX呼び出し
フルURL: https://host name/api/cxa/Catalog/GetSellableItemsSummary?sc_site=site name
例: https://mqa-ts-02-dk1/api/cxa/Catalog/GetSellableItemsSummary?sc_site=Storefront
Httpメソッド: POST
次の表は、この呼び出しで使用されるパラメーターの詳細を示しています。
パラメーター |
使う |
---|---|
アイテムID |
製品の一覧の製品IDとカタログ名を指定します。 例:Habitat_Master|6042976| |
includeBundledアイテム |
結果にバンドル項目を含めます。 例: true |
製品リストとプロモーション製品AJAX呼び出し
Product ListレンダリングはAJAX呼び出しを1つだけ行います。この呼び出しは、製品情報と価格および在庫情報の両方を取得し、Knockout JSを使用してHTMLマークアップにバインドされたJSONとして返します。製品リストのレンダリングには、CDインスタンス レベルで処理されるAJAX呼び出しキャッシングのサポートが組み込まれています。
プロモーション製品のレンダリングは、製品リストの取得方法と組み込みのAJAX呼び出しキャッシングをサポートしていないことを除いて、製品リストのレンダリングと似ています。
どちらのレンダリングも、コンテンツ配信ネットワーク (CDN) を使用して、それに伴う分散キャッシュ機能とジオロケーション キャッシュ機能を利用するときにAJAX呼び出しキャッシュをサポートします。 CDNキャッシング は、静的リソースがユーザーにとってよりローカルなサーバーに格納されるため、組み込みキャッシングよりも優れています。AJAX呼び出しのキャッシュを有効にすると、コンテンツと価格および株式情報の両方がキャッシュされます。これにより、商品コンテンツを価格情報や在庫情報の取得とは別にキャッシュできるCommerce検索結果レンダリングよりも柔軟性が低くなります。
GetProductList Ajax呼び出し
GetProductList Ajax呼び出しは、インデックスをクエリし、レンダリングするアイテムのリストを、JSON形式の製品リストの価格と在庫情報と共に取得します。呼び出しはコマース コンポーネント レイヤーに対して行われます。
フルURL: http://host name/api/cxa/catalog/GetProductList?sc_site=site name
次に例を示します。 http://mqa-ts-02-dk1/api/cxa/catalog/GetProductList?sc_site=Storefront
Httpメソッド: POST
次の表は、この呼び出しで使用されるパラメーターの詳細を示しています。
パラメーター |
使う |
---|---|
PGの |
ページを指定します。 |
PS |
ページ・サイズを指定します。 |
SDの |
ソート方向 (asc / dsc)。 |
CCIの |
キャッシュキーの作成に使用された現在のコンテキストアイテムID。 |
CIの |
現在のカタログ カテゴリ項目。 |