Cursos Magento

Magento 2: 2 dicas para acelerar seu ambiente de desenvolvimento

,

Atualizado em 17 de setembro de 2020

A maioria dos desenvolvedores experientes se assusta com performance do Magento 2 no ambiente local de desenvolvimento.

Como mostrado aqui no Magenteiro anteriormente, o Magento 2 com XDebug em um ambiente local é terrivelmente mais lento que um ambiente com Magento 1, mesmo que com a metade de memória Ram.

E como prometido, hoje vou compartilhar algumas considerações que podem ajudar bastante você na hora de desenvolver para Magento 2.

Desabilitar XDebug

O XDebug é uma ferramente extremamente útil para debugar códigos PHP de qualquer espécie. No entanto, quando habilitada afeta drasticamente o carregamento de uma loja Magento 2 em ambiente local. Veja só a performance da loja do curso de Magento 2 com Sample data:

Magento 2.2.4 + 4Gb Ram + PHP 7.1.12 (MAMP Pro c/ Apache s/ opcache)

Página de categoria após limpeza de cache (cache:clean)
Com XDebug:
 30.87s
Sem XDebug: 22.24s

Mesmo que você não esteja com o XDebug ativo, se a extensão for carregada a performance da loja é significantemente afetada.

É importante ressaltar que nos testes realizados anteriormente o Magento usado era o 2.2.2 e não o 2.2.4. Pude perceber mudanças significativas de performance no ambiente de desenvolvimento. Portanto, se você puder, atualize seu Magento.

Redis

O Redis com Magento 2 permite que coloquemos dados de sessão e de cache salvos direto em memória, ao invés de salvar no disco (padrão) ou em banco de dados. E isso faz muita diferença.

A instalação do Redis em si é bastante simples e fácil de ser encontrada na internet. Uma vez instalado, basta digitar redis-server para iniciar o servidor no ambiente local.

A configuração do Redis no Magento é bastante simples e pode ser feita direto no arquivo app/etc/env.php do seu Magento, da seguinte forma:

Magento Cache com Redis

Adicione o bloco abaixo antes da linha 'cache_types' no app/etc/env.php:

'cache' => 
  array (
    'frontend' => 
    array (
      'default' => 
      array (
        'backend' => 'Cm_Cache_Backend_Redis',
        'backend_options' => 
        array (
          'server' => '127.0.0.1',
          'port' => '6379',
          'database' => 3, //database number - um numero ainda nao usado no seu redis
        ),
      ),
      'page_cache' => 
      array (
        'backend' => 'Cm_Cache_Backend_Redis',
        'backend_options' => 
        array (
          'server' => '127.0.0.1',
          'port' => '6379',
          'database' => '4', //database number - um numero ainda nao usado no seu redis
          'compress_data' => '0',
        ),
      ),
    ),
  ),
'cache' => [
    'frontend' =>
        [
            'default' =>
                [
                    'backend' => 'Cm_Cache_Backend_Redis',
                    'backend_options' =>
                        [
                            'server' => '127.0.0.1',
                            'port' => '6379',
                            'database' => 3, //database number - um numero ainda nao usado no seu redis
                        ],],
            'page_cache' =>
                [
                    'backend' => 'Cm_Cache_Backend_Redis',
                    'backend_options' =>
                        [
                            'server' => '127.0.0.1',
                            'port' => '6379',
                            'database' => '4', //database number - um numero ainda nao usado no seu redis
                            'compress_data' => '0',
                        ],
                    ],
            ],
    ],

Nossa página de referência agora com Redis Cache: 20.96s.

No segundo load: 7.25s

Magento Session com Redis

Dentro do array 'session', adicione o trecho/array abaixo antes ou após a linha 'save'=>'files' e mude  o valor 'files' para 'redis':

'redis' => 
    array (
      'host' => '127.0.0.1',
      'port' => '6379',
      'password' => '',
      'timeout' => '2.5',
      'persistent_identifier' => '',
      'database' => '2',
      'compression_threshold' => '2048',
      'compression_library' => 'gzip',
      'log_level' => '1',
      'max_concurrency' => '6',
      'break_after_frontend' => '5',
      'break_after_adminhtml' => '30',
      'first_lifetime' => '600',
      'bot_first_lifetime' => '60',
      'bot_lifetime' => '7200',
      'disable_locking' => '0',
      'min_lifetime' => '60',
      'max_lifetime' => '2592000',
    ),
'redis' => [
      'host' => '127.0.0.1',
      'port' => '6379',
      'password' => '',
      'timeout' => '2.5',
      'persistent_identifier' => '',
      'database' => '2',
      'compression_threshold' => '2048',
      'compression_library' => 'gzip',
      'log_level' => '1',
      'max_concurrency' => '6',
      'break_after_frontend' => '5',
      'break_after_adminhtml' => '30',
      'first_lifetime' => '600',
      'bot_first_lifetime' => '60',
      'bot_lifetime' => '7200',
      'disable_locking' => '0',
      'min_lifetime' => '60',
      'max_lifetime' => '2592000',
    ],

Validando

E para ter certeza que está tudo certo:

  • Entramos no nosso redis com o comando redis-cli
  • Selecionamos um database (2, 3 ou 4 como nosso exemplo): select 2
  • Vemos se há valores salvos lá: keys *

Essas e outras dicas você encontra no Curso de Magento 2 do Magenteiro. Te espero lá.

Últimos posts por Ricardo Martins (exibir todos)
Comentários

Deixe seu comentário

[fbcomments url="https://www.magenteiro.com/blog/magento-2/acelerando-seu-ambiente-de-desenvolvimento/"]