签出性能最佳实践
Adobe Commerce中的结帐流程是店面体验的关键方面。 它依赖于内置购物车和结帐功能。
性能是保持良好用户体验的关键。 查看性能基准摘要以了解有关性能预期的更多信息。 您可以通过为 高吞吐量订单处理 配置以下选项来优化签出性能:
- AsyncOrder — 使用队列异步处理订单。
- 延迟总计计算 — 延迟订单总计计算,直到结帐开始。
- 购物车加载时的库存检查 — 选择跳过购物车项目的库存验证。
- 负载平衡 — 为MySQL数据库和Redis实例启用辅助连接。
AsyncOrder、Deferred Total Calculation和Inventory Check on Cart Load配置选项均可独立工作。 您可以同时使用全部三个功能,也可以任意组合启用和禁用这些功能。
异步下单
异步订单 模块启用异步订单下达,该功能将订单标记为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和NegotiableQuote。
延迟总计计算
延迟总计计算 模块通过将总计计算延迟到购物车请求时或在最终结帐步骤期间来优化结帐过程。 启用后,只有小计会在客户将产品添加到购物车时进行计算。
延迟总计计算默认为 禁用。 使用命令行界面启用这些功能,或根据 模块参考指南 中定义的相应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