Práticas recomendadas de desempenho de check-out
O processo check-out no Adobe Commerce é um aspecto crítico da experiência da vitrine eletrônica. Ele depende dos recursos carrinho e check-out integrados.
O desempenho é fundamental para manter uma boa experiência do usuário. Revise o resumo do benchmark de desempenho para saber mais sobre as expectativas de desempenho. Você pode otimizar o desempenho do check-out configurando as seguintes opções para processamento de pedido de alta taxa de transferência:
- AsyncOrder — processa de forma assíncrona pedidos usando uma fila.
- Cálculo do Total Adiado — Adiar cálculos para totais de pedidos até o início do check-out.
- Verificação de Inventário na Carga do Carrinho—Opte por ignorar a validação de inventário dos itens do carrinho.
- Balanceamento de carga—Habilita conexões secundárias para o banco de dados MySQL e a instância Redis.
As opções de configuração Ordem assíncrona, Cálculo de total adiado e Verificação de inventário no carregamento do carrinho funcionam independentemente. Você pode usar todos os três recursos simultaneamente ou habilitar e desabilitar os recursos em qualquer combinação.
Posicionamento assíncrono de pedidos
O módulo Ordem assíncrona habilita o posicionamento assíncrono de pedidos, que marca a ordem como received
, coloca a ordem em uma fila e processa pedidos da fila com base no primeiro a entrar, primeiro a sair. AsyncOrder está desabilitada por padrão.
Por exemplo, um cliente adiciona um produto ao carrinho de compras e seleciona Proceed to Checkout. Eles preenchem o formulário Shipping Address, selecionam sua Shipping Method preferencial, selecionam um método de pagamento e fazem o pedido. O carrinho de compras está limpo, o pedido está marcado como Received, mas a quantidade do produto ainda não está ajustada, nem um email de vendas foi enviado ao cliente. O pedido é recebido, mas os detalhes do pedido ainda não estão disponíveis porque o pedido não foi totalmente processado. Ele permanece na fila até que o consumidor placeOrderProcess
comece, verifique o pedido com o recurso verificação de inventário (habilitado por padrão) e atualize o pedido da seguinte maneira:
- Produto disponível—o status do pedido muda para Pendente, a quantidade do produto é ajustada, um email com os detalhes do pedido é enviado ao cliente e os detalhes do pedido bem-sucedido ficam disponíveis para exibição na lista Pedidos e Devoluções com opções acionáveis, como reordenar.
- Produto sem estoque ou com pouca oferta—o status do pedido muda para Rejeitado, a quantidade do Produto não é ajustada, um email com detalhes do pedido sobre o problema é enviado ao cliente e os detalhes do pedido rejeitado ficam disponíveis na lista Pedidos e Devoluções sem opções acionáveis.
Use a interface de linha de comando para habilitar esses recursos ou edite o arquivo app/etc/env.php
de acordo com os arquivos README correspondentes definidos no Guia de Referência de Módulo.
Para habilitar AsyncOrder:
Você pode habilitar a AsyncOrder usando a interface de linha de comando:
bin/magento setup:config:set --checkout-async 1
O comando set
grava o seguinte no arquivo app/etc/env.php
:
...
'checkout' => [
'async' => 1
]
Consulte AsyncOrder no Guia de Referência de Módulo.
Para desabilitar AsyncOrder:
Você pode desativar a AsyncOrder usando a interface de linha de comando:
bin/magento setup:config:set --checkout-async 0
O comando set
grava o seguinte no arquivo app/etc/env.php
:
...
'checkout' => [
'async' => 0
]
Compatibilidade com AsyncOrder
O AsyncOrder oferece suporte a um conjunto limitado de recursos do Adobe Commerce.
Check-out Padrão
Cotação Negociável B2B
Dinheiro na Entrega
Braintree
PayPal PayFlow Pro
Os seguintes recursos não são suportados por AsyncOrder, mas continuam a funcionar de forma síncrona:
- Métodos de pagamento não incluídos na lista de recursos compatíveis
- Check-out de vários endereços
- Criação do pedido do administrador
Suporte à API da Web
Quando o módulo AsyncOrder está habilitado, os seguintes endpoints REST e mutações GraphQL são executados de forma assíncrona:
REST:
GraphQL:
Excluindo métodos de pagamento
Os desenvolvedores podem excluir explicitamente determinados métodos de pagamento do posicionamento assíncrono de pedido adicionando-os à matriz Magento\AsyncOrder\Model\OrderManagement::paymentMethods
. Os pedidos que usam métodos de pagamento excluídos são processados de forma síncrona.
Ordem Assíncrona de Cotação Negociável
O módulo B2B Ordem assíncrona de Cotação Negociável permite salvar itens de ordem de forma assíncrona para a funcionalidade NegotiableQuote
. Você deve ter AsyncOrder e NegotiableQuote ativadas.
Cálculo do Total Diferido
O módulo Cálculo Total Adiado otimiza o processo de check-out adiando o cálculo total até que ele seja solicitado para o carrinho de compras ou durante as etapas finais do check-out. Quando ativado, somente o subtotal é calculado conforme um cliente adiciona produtos ao carrinho de compras.
O Cálculo Total Adiado está desabilitado por padrão. Use a interface de linha de comando para habilitar esses recursos ou edite o arquivo app/etc/env.php
de acordo com os arquivos README correspondentes definidos no Guia de Referência de Módulo.
Para habilitar DeferredTotalCalculation:
Você pode habilitar DeferredTotalCalculation usando a interface de linha de comando:
bin/magento setup:config:set --deferred-total-calculating 1
O comando set
grava o seguinte no arquivo app/etc/env.php
:
...
'checkout' => [
'deferred_total_calculating' => 1
]
Para desabilitar DeferredTotalCalculation:
Você pode desabilitar DeferredTotalCalculation usando a interface de linha de comando:
bin/magento setup:config:set --deferred-total-calculating 0
O comando set
grava o seguinte no arquivo app/etc/env.php
:
...
'checkout' => [
'deferred_total_calculating' => 0
]
Consulte DeferredTotalCalculating no Guia de Referência de Módulo.
Imposto Fixo do Produto
Quando o Cálculo Total Diferido está habilitado, o Imposto Fixo do Produto (FPT) não é incluído no preço do produto e no subtotal do carrinho do minicarrinho depois de adicionar o produto ao carrinho de compras. O cálculo do FPT é adiado ao adicionar um produto ao minicarrinho. O FPT é exibido corretamente no carrinho de compras após prosseguir para a finalização.
Desabilitar verificação de estoque
A configuração global Habilitar inventário ao carregar o carrinho determina se deve ser executada uma verificação de inventário ao carregar um produto no carrinho. Desativar o processo de verificação de inventário melhora o desempenho de todas as etapas de check-out, principalmente ao lidar com produtos em massa no carrinho.
Quando desativada, a verificação de inventário não ocorre ao adicionar um produto ao carrinho. Se essa verificação de inventário for ignorada, alguns cenários sem estoque poderão gerar outros tipos de erros. Uma verificação de inventário sempre ocorre na etapa de posicionamento do pedido, mesmo quando desabilitada.
Habilitar a Verificação de Inventário na Carga do Carrinho está habilitado (definido como Sim) por padrão. Para desabilitar a verificação de estoque ao carregar o carrinho, defina Enable Inventory Check On Cart Load como No
na seção Lojas da Interface do Administrador > Configuração > Catálogo > Inventário > Opções de Estoque. Consulte Configurar opções globais e Inventário de catálogo no Guia do Usuário.
Balanceamento de carga
Você pode ajudar a balancear a carga em diferentes nós, habilitando conexões secundárias para o banco de dados MySQL e a instância Redis.
O Adobe Commerce pode ler vários bancos de dados ou instâncias Redis de forma assíncrona. Se você estiver usando o Commerce na infraestrutura em nuvem, poderá configurar as conexões secundárias editando os valores de MYSQL_USE_SLAVE_CONNECTION e REDIS_USE_SLAVE_CONNECTION no arquivo .magento.env.yaml
. Somente um nó precisa manipular o tráfego de leitura e gravação. Portanto, definir as variáveis como true
resultará na criação de uma conexão secundária para o tráfego somente leitura. Defina os valores como false
para remover qualquer matriz de conexão somente leitura existente do arquivo env.php
.
Exemplo do arquivo .magento.env.yaml
:
stage:
deploy:
MYSQL_USE_SLAVE_CONNECTION: true
REDIS_USE_SLAVE_CONNECTION: true