結帳效能最佳實務
Adobe Commerce中的結帳程式是店面體驗的關鍵層面。 它仰賴內建的購物車和結帳功能。
效能是維持良好使用者體驗的關鍵。 您可以為 高輸送量訂單處理 設定下列選項,以最佳化結帳效能:
- AsyncOrder — 使用佇列以非同步方式處理訂單。
- 延後總計計算 — 延後訂單總計計算,直到結帳開始。
- 購物車載入時的詳細目錄檢查 — 選擇略過購物車專案的詳細目錄驗證。
- 負載平衡 — 啟用MySQL資料庫和Redis執行個體的次要連線。
AsyncOrder、延遲總計計算及購物車載入庫存檢查組態選項都可獨立運作。 您可以同時使用全部三個功能,或以任何組合來啟用和停用功能。
非同步下單
非同步訂單 模組啟用非同步訂單放置,這會將訂單標示為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:
您可以使用命令列介面停用AsyncOrder:
bin/magento setup:config:set --checkout-async 0
set
命令會將下列內容寫入app/etc/env.php
檔案:
...
'checkout' => [
'async' => 0
]
AsyncOrder相容性
AsyncOrder支援有限的Adobe Commerce功能集。
標準簽出
B2B可轉讓報價
交貨付款
Braintree
PayPal PayFlow Pro
下列功能 不受AsyncOrder支援,但可繼續同步運作:
- 支援的功能清單中未包含付款方法
- 多位址簽出
- 管理訂單建立
Web API支援
啟用AsyncOrder模組後,下列REST端點和GraphQL變動會以非同步方式執行:
REST:
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_CONNECTION和REDIS_USE_SLAVE_CONNECTION值來設定次要連線。 只有一個節點需要處理讀寫流量,因此將變數設定為true
會導致建立唯讀流量的次要連線。 將值設定為false
以從env.php
檔案中移除任何現有的唯讀連線陣列。
.magento.env.yaml
檔案的範例:
stage:
deploy:
MYSQL_USE_SLAVE_CONNECTION: true
REDIS_USE_SLAVE_CONNECTION: true