Práticas recomendadas de configuração
O Commerce fornece muitas configurações e ferramentas que você pode usar para melhorar o tempo de resposta nas páginas, bem como fornecer uma taxa de transferência mais alta.
Cron Jobs
Todas as operações assíncronas em Commerce são executadas usando o comando cron
do Linux. Consulte Configurar e executar o cron para configurá-lo corretamente.
Indexadores
Um indexador pode ser executado no modo Update on Save ou Update on Schedule. O modo Update on Save indexa imediatamente sempre que o catálogo ou outros dados são alterados. Esse modo assume uma baixa intensidade de operações de atualização e navegação na loja. Isso pode levar a atrasos significativos e indisponibilidade de dados durante cargas altas. Recomendamos o uso de Atualizar na Programação para fins de desempenho, pois armazena informações sobre atualizações de dados e executa a indexação por partes em segundo plano por meio de um trabalho cron específico. Você pode alterar o modo de cada indexador Commerce separadamente na página de configuração System > Tools > Index Management. O índice Customer Grid sempre deve ser definido para o modo Update on Save.
Caches
Ao iniciar seu armazenamento na produção, ative todos os caches na página System > Tools > Cache Management. Recomendamos o uso do Varnish, pois ele é uma solução eficiente de cache de página de produção.
Notificações de email assíncronas
A ativação da configuração "Notificações de email assíncronas" move processos que lidam com notificações de email de check-out e processamento de pedidos para o segundo plano. Para habilitar este recurso, vá para Stores> Settings > Configuration > Sales > Sales Emails > General Settings >Asynchronous Sending. Consulte Emails de vendas no Guia do Usuário de Administração para obter mais informações.
Processamento assíncrono de dados de pedido
Pode haver momentos em que vendas intensas em uma loja ocorram ao mesmo tempo em que Commerce está executando um processamento intensivo de pedidos. Você pode configurar o Commerce para distinguir esses dois padrões de tráfego no nível do banco de dados para evitar conflitos entre operações de leitura e gravação nas tabelas correspondentes. Você pode armazenar e indexar dados de pedido de maneira assíncrona. Os pedidos são colocados em armazenamento temporário e movidos em massa para a grade do Order Management sem colisões. Você pode ativar esta opção de Stores> Settings > Configuration > Advanced > Developer > Grid Settings >Asynchronous indexing. Consulte Atualizações de Grade Agendadas no Guia do Usuário de Administração para obter mais informações.
Developer
.Salvamento assíncrono de configuração
Para projetos com um grande número de configurações no nível da loja, salvar uma configuração de loja pode levar um tempo excessivo ou resultar em um tempo limite. O módulo Async Config habilita salvamentos assíncronos de configuração executando um trabalho cron que usa um consumidor para processar o salvamento em uma fila de mensagens. AsyncConfig está desabilitado por padrão.
Você pode ativar o AsyncConfig usando a interface de linha de comando:
bin/magento setup:config:set --config-async 1
O comando set
grava o seguinte no arquivo app/etc/env.php
:
...
'config' => [
'async' => 1
]
Inicie o seguinte Consumidor para começar a processar as mensagens na fila na base primeiro a entrar primeiro a sair:
bin/magento queue:consumers:start saveConfigProcessor --max-messages=1
Atualização de estoque adiada
Em tempos de vendas intensas, Commerce pode adiar atualizações de estoque relacionadas a pedidos. Isso minimiza o número de operações e acelera o processo de colocação de pedidos. No entanto, essa opção é arriscada e só pode ser usada quando Backorders são ativados no armazenamento, porque essa opção pode levar a quantidades de estoque negativas. Essa opção pode trazer uma melhora significativa no desempenho dos fluxos de saída para lojas que podem facilmente reabastecer seu estoque sob demanda. Para ativar atualizações de estoque adiadas em seu site, vá para Stores> Settings > Configuration > Catalog > Inventory > Product Stock Options >Use Deferred Stock Update. Consulte Gerenciamento de inventário no Guia do Usuário do Adobe Commerce para obter mais informações.
Configurações de otimização do lado do cliente
Para melhorar a capacidade de resposta da loja da sua instância do Commerce, vá para o Administrador no modo Padrão ou de Desenvolvedor e altere as seguintes configurações:
Stores-> Configuration -> Advanced -> Developer:
Developer
.Ao ativar a opção Enable JavaScript Bundling, você permite que o Commerce mescle todos os recursos JS em um ou um conjunto de pacotes que são carregados nas páginas de frente da loja. O agrupamento de JS resulta em menos solicitações para o servidor, o que melhora o desempenho da página. Também ajuda o navegador a armazenar em cache recursos JS na primeira chamada e a reutilizá-los para navegação adicional. Essa opção também traz uma avaliação lenta, pois todo o JS é carregado como texto. Ele inicia a análise e a avaliação do código somente após ações específicas serem acionadas na página. No entanto, essa configuração não é recomendada para lojas em que o tempo de carregamento da primeira página é extremamente crítico, pois todo o conteúdo JS será carregado na primeira chamada.
Dicas de agrupamento
- Recomendamos que você use ferramentas de terceiros para minificação e agrupamento (como r.js). Commerce mecanismos internos não são ideais e são enviados como alternativas de fallback.
- A ativação do protocolo HTTP/2 pode ser uma boa alternativa para usar o empacotamento JS. O protocolo oferece muitos dos mesmos benefícios. Ela é ativada por padrão na Adobe Commerce em projetos de infraestrutura em nuvem.
- Não recomendamos usar configurações obsoletas, como mesclar arquivos JS e CSS, pois foram projetadas apenas para JS carregado de forma síncrona na seção HEAD da página. O uso dessa técnica pode fazer com que o agrupamento e a lógica requireJS funcionem incorretamente.
Validação de segmentos de cliente
Os comerciantes que têm um grande número de segmentos de clientes podem enfrentar uma degradação significativa do desempenho com ações do cliente, como fazer logon no cliente e adicionar produtos ao carrinho.
As ações do cliente acionam um processo de validação para segmentos de clientes, que é o que pode causar degradação do desempenho. Por padrão, o Adobe Commerce valida cada segmento em tempo real para definir quais segmentos de clientes são correspondidos e quais não são.
Para evitar a degradação do desempenho, você pode definir a opção de configuração do sistema Real-time Check if Customer is Matched by Segment como Não para validar os segmentos do cliente por uma única consulta SQL de condição combinada.
Para habilitar esta otimização, vá para Stores> Settings > Configuration > Customers > Customer Configuration > Customer Segments >Real-time Check if Customer is Matched by Segment.
Essa configuração melhora o desempenho da validação de segmentos de clientes se houver muitos segmentos de clientes no sistema. No entanto, ele não funciona com implementações de banco de dados dividido ou quando não há clientes registrados.
Agendamento de manutenção do banco de dados database
Recomendamos executar backups periódicos do banco de dados para suas instâncias de Preparo e Produção. Devido à natureza intensiva de I/O das operações de backup, você pode encontrar backups mais lentos e possíveis problemas. A execução de processos de banco de dados para vários ambientes ao mesmo tempo pode ser mais lenta devido à contenção dos recursos disponíveis.
Para obter melhor desempenho, agende seus backups para serem executados sucessivamente, um de cada vez, fora dos horários de pico. Esse método evita a contenção de I/O e reduz o tempo de conclusão, especialmente para instâncias menores, bancos de dados maiores e assim por diante.
Por exemplo, recomendamos agendar um backup do banco de dados de Produção seguido pelo banco de dados de Preparo quando suas lojas encontrarem visitas menores.
Limitar número de produtos na grade
Para melhorar o desempenho da grade de produtos para catálogos grandes, recomendamos limitar o número de produtos na grade com a configuração do sistema Stores> Settings > Configuration > Advanced > Admin > Admin Grids >Limit Number of Products in Grid.
Essa configuração do sistema está desabilitada por padrão. Ao ativá-la, é possível limitar o número de produtos na grade a um valor específico. Records Limit é uma configuração personalizável que tem um valor padrão mínimo de 20000
.
Quando a configuração Limit Number of Products in Grid estiver habilitada e o número de produtos na grade for maior que o limite de registros, a coleção limitada de registros será retornada. Quando o limite é atingido, o total de registros encontrados, o número de registros selecionados e os elementos de paginação ficam ocultos no cabeçalho da grade.
Quando o número total de produtos na grade é limitado, isso não afeta as ações de massa da grade de produtos. Ela afeta apenas a camada de apresentação da grade de produtos. Por exemplo, há um número limitado de 20000
produtos na grade, o usuário clica em Select All, seleciona a ação em massa Update attributes e atualiza alguns atributos. Como resultado, todos os produtos são atualizados, não a coleção limitada de 20000
registros.
A limitação da grade de produtos afeta apenas as coleções de produtos usadas pelos componentes da interface do usuário. Como resultado, nem todas as grades de produtos são afetadas por essa limitação. Somente aqueles que estão usando Magento\Catalog\Ui\DataProvider\Product\ProductCollection
.
É possível limitar as coleções de grade de produto somente nas seguintes páginas:
- Grade de Produtos do Catálogo
- Adicionar grade de produtos relacionados/venda adicional/venda cruzada
- Adicionar produtos ao produto do pacote
- Adicionar produtos ao produto do grupo
- Página Criar pedido do administrador
Se você não quiser que a grade de produtos seja limitada, recomendamos que você use filtros com mais precisão para que a coleção de resultados tenha menos itens do que Records Limit.