結帳效能最佳實務

Adobe Commerce中的結帳程式是店面體驗的關鍵層面。 它仰賴內建的購物車結帳功能。

效能是維持良好使用者體驗的關鍵。 您可以為​ 高輸送量訂單處理 ​設定下列選項,以最佳化結帳效能:

AsyncOrder、延遲總計計算及購物車載入庫存檢查組態選項都可獨立運作。 您可以同時使用全部三個功能,或以任何組合來啟用和停用功能。

NOTE
請勿使用自訂PHP程式碼來自訂內建購物車和出庫功能。 除了潛在的效能問題之外,使用自訂PHP程式碼還可能導致複雜的升級和維護挑戰。 這些問題會增加您的總擁有成本。 如果無法避免PHP購物車和結帳自訂,則僅使用Adobe Commerce Marketplace核准的擴充功能。 所有Marketplace擴充功能都需經過廣泛檢閱,才能確認其符合Adobe Commerce程式碼標準和最佳實務。

非同步下單

非同步訂單 ​模組啟用非同步訂單放置,這會將訂單標示為received,將訂單置於佇列中,並以先進先出原則處理佇列中的訂單。 AsyncOrder預設為​ 已停用

例如,客戶新增產品至購物車並選取​ Proceed to Checkout。 他們填寫​ Shipping Address ​表單、選擇他們偏好的​ Shipping Method、選擇付款方式並下訂單。 購物車已結清,訂單已標示為​ Received,但產品數量尚未調整,也不會傳送銷售電子郵件給客戶。 已收到訂單,但由於訂單尚未完全處理,因此尚未提供訂單詳細資料。 它會保留在佇列中,直到placeOrderProcess取用者開始,使用庫存檢查功能驗證訂單(預設為啟用),並更新訂單,如下所示:

  • 可用的產品 — 訂單狀態變更為​ 擱置中、產品數量已調整、含訂單詳細資料的電子郵件已傳送給客戶,而且成功的訂單詳細資料可在​ 訂單與退貨 ​清單中檢視,並包含可操作的選項,例如重新訂購。
  • 產品無存貨或供給不足 — 訂單狀態變更為​ 已拒絕,未調整產品數量,已傳送一封包含訂單詳細資訊的電子郵件給客戶,且在​ 訂單與退貨 ​清單中可以使用已拒絕的訂單詳細資訊,且沒有可操作的選項。

使用命令列介面來啟用這些功能,或根據​ 模組參考指南 中定義的對應README檔案來編輯app/etc/env.php檔案。

若要啟用AsyncOrder

您可以使用命令列介面啟用AsyncOrder:

bin/magento setup:config:set --checkout-async 1

set命令會將下列內容寫入app/etc/env.php檔案:

...
   'checkout' => [
       'async' => 1
   ]

請參閱​ 模組參考指南 ​中的非同步訂單

停用AsyncOrder

WARNING
在停用AsyncOrder模組之前,您必須確認​_所有_​非同步訂購程式已完成。

您可以使用命令列介面停用AsyncOrder:

bin/magento setup:config:set --checkout-async 0

set命令會將下列內容寫入app/etc/env.php檔案:

...
   'checkout' => [
       'async' => 0
   ]

AsyncOrder相容性

AsyncOrder支援有限的Adobe Commerce功能集。

類別
支援的功能
簽出型別
OnePage簽出
標準簽出
B2B可轉讓報價
付款方法
支票/現金訂單
交貨付款
Braintree
PayPal PayFlow Pro
送貨方法
支援所有送貨方法。

下列功能​ 不受AsyncOrder支援,但可繼續同步運作:

  • 支援的功能清單中未包含付款方法
  • 多位址簽出
  • 管理訂單建立

Web API支援

啟用AsyncOrder模組後,下列REST端點和GraphQL變動會以非同步方式執行:

REST:

GraphQL:

INFO
GraphQL不支援以非同步方式放置可轉讓的報價單。

排除付款方法

開發人員可以透過將某些付款方法新增至Magento\AsyncOrder\Model\OrderManagement::paymentMethods陣列,將其從非同步訂購中明確排除。 使用已排除付款方法的訂單會同步處理。

可轉讓報價非同步訂單

可轉讓報價非同步訂單 B2B模組可讓您非同步儲存NegotiableQuote功能的訂單專案。 您必須啟用AsyncOrder與NegotialQuote。

遞延總計計算

遞延總計計算 ​模組會藉由遞延總計計算來最佳化結帳程式,直到購物車要求總計計算或在最終結帳步驟期間為止。 啟用時,只有小計會在客戶新增產品至購物車時計算。

遞延總計計算預設為​ 停用。 使用命令列介面來啟用這些功能,或根據​ 模組參考指南 中定義的對應README檔案來編輯app/etc/env.php檔案。

若要啟用DeferredTotalCalculation

您可以使用命令列介面啟用DeferredTotalCalculation:

bin/magento setup:config:set --deferred-total-calculating 1

set命令會將下列內容寫入app/etc/env.php檔案:

...
   'checkout' => [
       'deferred_total_calculating' => 1
   ]

若要停用DeferredTotalCalculation

您可以使用命令列介面停用DeferredTotalCalculation:

bin/magento setup:config:set --deferred-total-calculating 0

set命令會將下列內容寫入app/etc/env.php檔案:

...
   'checkout' => [
       'deferred_total_calculating' => 0
   ]

請參閱​ 模組參考指南 ​中的DeferredTotalCalculating

固定產品稅金

啟用遞延總計計算時,將產品新增至購物車後,固定產品稅(FPT)不會納入迷你購物車的產品價格與購物車小計中。 將產品新增至迷你購物車時,FPT計算會延遲。 繼續進行最終結帳之後,FPT會在購物車中正確顯示。

停用詳細目錄檢查

在購物車載入時啟用詳細目錄 ​全域設定決定在購物車載入產品時是否執行詳細目錄檢查。 停用庫存檢查程式可改善所有結帳步驟的效能,尤其是處理購物車中的大量產品時。

停用時,將產品新增到購物車時不會進行詳細目錄檢查。 如果跳過此庫存檢查,則某些缺貨情況可能會擲回其他型別的錯誤。 庫存檢查​ 一律 ​會發生在訂單放置步驟,即使停用也一樣。

購物車載入時啟用存貨檢查 ​預設為啟用(設定為「是」)。 若要在載入購物車時停用詳細目錄檢查,請在管理UI 商店 > 設定 > 目錄 > 詳細目錄 > 庫存選項 ​區段中,將​ Enable Inventory Check On Cart Load ​設定為No。 請參閱​ 使用手冊 ​中的設定全域選項目錄詳細目錄

負載平衡

您可以啟用MySQL資料庫和Redis執行個體的次要連線,協助平衡不同節點的負載。

Adobe Commerce可以非同步方式讀取多個資料庫或Redis執行個體。 如果您在雲端基礎結構上使用Commerce,您可以編輯.magento.env.yaml檔案中的MYSQL_USE_SLAVE_CONNECTIONREDIS_USE_SLAVE_CONNECTION值來設定次要連線。 只有一個節點需要處理讀寫流量,因此將變數設定為true會導致建立唯讀流量的次要連線。 將值設定為false以從env.php檔案中移除任何現有的唯讀連線陣列。

.magento.env.yaml檔案的範例:

stage:
  deploy:
    MYSQL_USE_SLAVE_CONNECTION: true
    REDIS_USE_SLAVE_CONNECTION: true
recommendation-more-help
c0c5bbed-4957-4162-81bc-120c837a1894