設定最佳實務
Commerce提供許多設定和工具,可用來改善頁面上的回應時間,並提供更高的輸送量。
Cron工作
Commerce中的所有非同步作業都是使用Linux cron
命令執行。 請參閱設定並執行cron以正確設定。
索引子
索引子可以在 Update on Save 或 Update on Schedule 模式中執行。 Update on Save 模式會在目錄或其他資料變更時立即編制索引。 此模式假設您的存放區中的更新和瀏覽作業強度很低。 在高負載期間,這可能會導致嚴重的延遲和資料無法使用。 基於效能考量,我們建議使用排程 上的 更新,因為它會儲存資料更新的相關資訊,並透過特定的cron工作在背景依部分執行索引。 您可以在 System > Tools > Index Management 設定頁面上個別變更每個Commerce索引器的模式。 Customer Grid索引必須一律設定為 Update on Save 模式。
快取
當您在生產環境中啟動商店時,請從「System > Tools > Cache Management」頁面啟動所有快取。 我們強烈建議使用Varnish,因為這是有效的生產頁面快取解決方案。
非同步電子郵件通知
啟用「非同步電子郵件通知」設定,將處理結帳和訂單處理電子郵件通知的流程移至背景。 若要啟用此功能,請移至 Stores> Settings > Configuration > Sales > Sales Emails > General Settings >Asynchronous Sending。 如需詳細資訊,請參閱 管理員使用手冊 中的銷售電子郵件。
非同步處理訂單資料
有時候,店面上的密集銷售會在Commerce執行密集訂單處理的同時發生。 您可以設定Commerce來區分資料庫層級的這兩個流量模式,以避免對應資料表中的讀取和寫入作業發生衝突。 您可以非同步方式儲存及索引訂單資料。 訂單會暫時存放並大量移至Order Management網格,而不會出現任何衝突。 您可以從「Stores> Settings > Configuration > Advanced > Developer > Grid Settings >Asynchronous indexing」啟用此選項。 如需詳細資訊,請參閱 管理員使用指南 中的排程網格更新。
非同步設定儲存
對於具有大量存放區層級設定的專案,儲存存放區設定可能需要過多的時間或導致逾時。 非同步設定 模組會執行使用消費者處理訊息佇列中儲存的cron工作,以啟用非同步設定儲存。 AsyncConfig預設為 已停用。
您可以使用命令列介面啟用AsyncConfig:
bin/magento setup:config:set --config-async 1
set
命令會將下列內容寫入app/etc/env.php
檔案:
...
'config' => [
'async' => 1
]
啟動下列取用者,開始以先進先出方式處理佇列中的訊息:
bin/magento queue:consumers:start saveConfigProcessor --max-messages=1
已延期的庫存更新
在密集銷售期間,Commerce可以延遲與訂單相關的庫存更新。 如此可儘量減少作業次數,並加快下單程式。 但是,此選項有風險,而且只能在啟用商店中的延期交貨訂單時使用,因為此選項可能導致存貨數量為負數。 此選項可大幅改善商店結帳流程的效能,這些商店可輕易地隨選重新補充庫存。 若要啟用您網站上的遞延庫存更新,請前往 Stores> Settings > Configuration > Catalog > Inventory > Product Stock Options >Use Deferred Stock Update。 如需詳細資訊,請參閱 Adobe Commerce使用手冊 中的管理詳細目錄。
使用者端最佳化設定
若要改善Commerce執行個體的店面回應能力,請以預設或開發人員模式前往「管理員」,並變更下列設定:
Stores-> Configuration -> Advanced -> Developer:
當您啟用 Enable JavaScript Bundling 選項時,可允許Commerce將所有JS資源合併為一個或一組載入店面頁面的組合。 整合JS可減少伺服器要求,進而改善頁面效能。 它還有助於瀏覽器在第一次呼叫時快取JS資源,並在所有進一步的瀏覽中重複使用。 此選項也會帶來延遲評估,因為所有JS都會載入為文字。 它只會在頁面上觸發特定動作後,才會起始程式碼分析和評估。 不過,不建議將此設定用於第一個頁面載入時間極為重要的存放區,因為所有JS內容都將在第一次呼叫時載入。
套件組合提示
- 建議您使用協力廠商工具進行縮制和組合(例如r.js)。 Commerce個內建機制並非最佳狀態,且已作為備援替代品出貨。
- 啟動HTTP/2通訊協定可能是使用JS套裝的好替代方案。 通訊協定具有許多相同的優點。 在雲端基礎結構專案中,Adobe Commerce預設會啟用此功能。
- 我們不建議使用已棄用的設定,例如合併JS和CSS檔案,因為這些設定是專為頁面的HEAD區段中同步載入的JS而設計。 使用此技術可能會導致套件組合,並要求JS邏輯無法正確運作。
客戶區段驗證
具有大量客戶區段的商家,可能會因為客戶動作(例如客戶登入以及將產品加入購物車)而發生效能大幅降低的情況。
客戶動作會觸發客戶區段的驗證程式,而此程式可能會導致效能降低。 依預設,Adobe Commerce會即時驗證每個區段,以定義哪些客戶區段符合,哪些客戶區段不符合。
為避免效能降低,您可以將 Real-time Check if Customer is Matched by Segment 系統組態選項設為 否,以透過單一合併條件SQL查詢來驗證客戶區段。
若要啟用此最佳化,請移至 Stores> Settings > Configuration > Customers > Customer Configuration > Customer Segments >Real-time Check if Customer is Matched by Segment。
如果系統中有許多客戶區段,此設定可改善客戶區段驗證的效能。 但是,它無法搭配分割資料庫實作使用,或是沒有已註冊的客戶。
資料庫維護排程 database
我們建議您為測試及生產執行個體執行定期的資料庫備份。 由於備份作業的I/O密集性質,您可能會遇到備份速度較慢和潛在的問題。 同時針對多個環境執行資料庫處理序可能會因為可用資源的爭用而變慢。
為提升效能,請將備份排程為在非尖峰時間連續執行(一次執行一個)。 此方法可避免I/O爭用,並減少完成時間,尤其是對於較小的執行個體、較大的資料庫等。
例如,建議您在商店遇到較低的造訪次數時,先排程生產資料庫的備份,接著再排程中繼資料庫。
限制格線中的產品數量
若要改善大型目錄的產品格線效能,建議使用 Stores> Settings > Configuration > Advanced > Admin > Admin Grids >Limit Number of Products in Grid 系統組態設定來限制格線中的產品數量。
此系統組態設定預設為停用。 一旦啟用,您就可以將格線中的產品數量限製為特定值。 Records Limit 是可自訂的設定,預設最小值為20000
。
當啟用 Limit Number of Products in Grid 設定且網格中的產品數目大於記錄限制時,則會傳回有限的記錄集合。 當達到限制時,找到的記錄總數、選取的記錄數以及分頁元素將從網格標頭中隱藏。
當格線中的產品總數有限時,它不會影響產品格線大量動作。 它只會影響產品格線表示層。 例如,格線中的20000
產品數目有限,使用者按一下 Select All,選取 Update attributes 大量動作,並更新部分屬性。 因此,所有產品都會更新,而不是有限的20000
記錄集合。
產品格線限制僅影響UI元件使用的產品集合。 因此,並非所有產品格點都受此限制影響。 僅限使用Magento\Catalog\Ui\DataProvider\Product\ProductCollection
的客戶。
您只能在下列頁面上限制產品格線集合:
- 目錄產品格線
- 新增相關/向上銷售/交叉銷售產品網格
- 將產品新增至套件組合產品
- 新增產品至群組產品
- 管理員建立訂單頁面
如果您不希望產品格線受到限制,建議您更精確地使用篩選器,使結果集合的專案數少於 Records Limit。