Tutorial Magento – como melhorar performance

admin Sem categoria

Este é um tutorial Magento para você otimizar a perfomance da sua loja virtual. Talvez o principal fator negativo de influência em sua taxa de conversão seja a performance da sua loja virtual. Não há nada mais frustante ao usuário do que tentar navegar por uma loja virtual e ter que esperar muito para a página da categoria/departamento ou do produto carregar, ou então ter que ficar esperando minutos até que a foto ampliada do produto seja completamente carregada em seu navegador.

Muitos lojistas na ânsia de iniciar logo suas vendas cometem o erro grave de não investir na performance de sua loja virtual. Mas ao contrário do que muitos pensam o investimento em performance em uma loja Magento tem mais a ver com o tuning (afinação) da loja e do servidor do que um investimento pesado em servidor.

Uma loja bem configurada em um servidor barato muitas vezes consegue uma performance extremamente superior à uma loja mau configurada em um servidor mais robusto e caro.

Existem empresas estrangeiras que oferecem planos de hospedagem muito acessíveis e que apesar de estarem fora do país, com uma bela afinação do seu Magento, irão competir de igual para igual (e talvez até melhor) em termos de performance com seus concorrentes hospedados aqui no Brasil. Mas lembre-se, o segredo está no tuning perfeito da sua loja e servidor web.

Como forma de ajudar os amigos amantes do Magento a aumentar a performance de suas lojas montamos esse tutorial. Com essas dicas com certeza você conseguirá tirar o máximo de proveito da sua loja e terá mais tempo para melhorar outros fatores que influenciem na sua conversão.

Vamos às dicas…

Tunando o Apache

Apesar de muitos companheiros indicarem o Nginx como uma ótima solução para aumento de performance do Magento, vou descrever algumas dicas exclusivas do Apache que acredito ser o servidor web mais popular entre as empresas de hosting.

Vale salientar que essas dicas só poderão ser efetuadas se a sua loja estiver em um servidor dedicado, cloud, VPS (virtual private server) ou semi-dedicado. Caso a sua loja esteja em ambiente compartilhado então será praticamente impossível aplicar as dicas à seguir.

Módulos

Verifique no arquivo httpd.conf e desabilite os módulos desnecessários para rodar a sua loja. O Magento exige alguns módulos do Apache para o seu funcionamento mas os principais são:

  • expires_module
  • deflate_module
  • mime_module
  • dir_module
  • rewrite_module
  • authz_host_module
  • authz_user_module
  • file_cache_module
  • authn_alias_module
  • mime_magic_module
  • log_config_module
  • headers_module
  • alias_module
  • setenvif_module
  • autoindex_module
  • negotiation_module
  • suexec_module

Os demais módulos que estejam sendo carregados você deve analisar se realmente estão sendo usados, e caso não estejam simplesmente os desabilite. Isso deve ser feito para que a cada requisição o seu Apache não utilize recursos desnecessários do servidor, alocando mais memória do que realmente deveria utilizar e consumindo mais CPU do que deveria.

Tratamento de Conexões e Requisições

Um ponto crucial na otimização do Apache em seu servidor é a configuração correta dos parâmetros responsáveis por determinar como o webserver irá tratar as requisições do site. Você deve se concentrar nos seguintes parâmetros:

  • MaxClients: esse parâmetro irá controlar a quantidade máxima de processos do apache que poderão ser executadas pelo sistema operacional. Você deve estudar bem o seu caso mas um exemplo genérico de configuração para esse parâmetro é de 150 para cada 1GB de RAM, mas nunca considere o valor total de sua RAM instalada pois o servidor irá rodar outros processos que também utilizam memória. Então, se o seu servidor possui apenas 1GB de RAM coloque um valor entre 60 e 100 para evitar problemas com estouro de memória;
  • KeepAlive: é importante manter esse parâmetro como ON pois é ele que garante que várias requisições sejam processadas dentro da mesma conexão, economizando recursos do servidor;
  • MaxKeepAliveRequests: indica quantas requisições devem ser tratadas por requisição. Um bom valor é 2000, mas novamente isso depende da sua quantidade de memória;
  • KeepAliveTimeout: aqui você informa o número de segundos que a próxima requisição do cliente deve esperar para ser processada. Não informe uma valor muito alto para não deixar as requisições esperando demais na fila. Valor ideal: 15;

Existem outros parâmetros do Apache mas alterando apenas esses parâmetros você já terá um bom resultado em performance.

Tunando o Magento

Agora começa a parte divertida. Talvez algumas das dicas que você verá abaixo você até já conheça, mas algumas (ao menos para mim) parecem tão óbvias agora mas sempre deu um medo danado de mexer e acabar botando fogo na loja.

E o poder é de vocês: .htaccess

O arquivo .htaccess padrão do Magento possui praticamente tudo sobre aumento de performance, mas talvez por uma questão de peculiaridade de servidores ou por maldade mesmo, todas essas configurações vêm comentadas. A primeira delas e com certeza a mais importante é a compressão de saída ou Output Compression.

Nesse ponto é feito um uso bastante intensivo do mod_deflate do Apache para compressão de arquivos texto/html, css e javascript antes de enviá-los ao navegador. Isto irá fazer com que o download seja menor e como consequência baixado mais rapidamente. Veja abaixo quais configurações usar:

<IfModule mod_deflate.c>
    SetOutputFilter DEFLATE
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript 
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
    SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
    Header append Vary User-Agent env=!dont-vary
</IfModule>

Outro recurso interessante é ativar a expiração de cabeçalhos ou Expires Headers que faz uso de rotinas do mod_expires do Apache. Ativar esse recurso informa aos navegadores quanto tempo os componentes de uma página (imagens, css, etc) devem ficar em cache.

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "access plus 1 year"
</IfModule>

Por último, você deve desabilitar as ETags. Esse recurso é utilizados pelos navegadores para validar componentes em cache de uma página em visitas futuras, porém isso compromete bastante a performance de um site.

     FileETag none

E o segredo estava no admin

Exatamente, muitos recursos presentes no painel administrativo do Magento atuam como mágica no aumento da performance de uma loja Magento.

A primeira brincadeira é a combinação de arquivos CSS e JS. Esse recurso é encontrado em Sistema -> Configuração -> Desenvolvedor nas abas Configurações de Javascript  e Configurações de CSS. Em ambas ambas basta atribuir o valor Sim aos campos Mesclar Arquivos JavascriptMesclar Arquivos CSS respectivamente. Salva as configurações e limpe o cache. Todos os arquivos css serão combinados em apenas um arquivo e todos os js também combinados em um único arquivo. Com isso o navegador fará uma única requisição para cada tipo de conteúdo, css ou js.

Agora a dica mais interessante, habilitar o catálogo flat de produtos e categorias. Essa com certeza é uma daquelas configurações que você olhou e se perguntou:

Que diabos é isso?

Pois é, essa configuração é mágica. Para visualizá-la vá em Sistema -> Configuração -> Catálogo e na aba Frontend marque Sim nas opções Usar Catálogo de Categoria Unificado e Usar Catálogo de Produtos Unificado. Após salvar as configurações limpe o cache da sua loja. Essa configuração irá criar uma série de tabelas no banco de dados onde as informações de produtos e categorias estarão organizadas de forma a serem obtidas mais rapidamente pelo sistema consumindo o mínimo de recursos do servidor possíveis.

Outro recurso do Magento que você com certeza deve ter se perguntado pra que diabos servia, é o recurso da Compilação. Trocando em míudos esse recurso irá recriar a estrutura de arquivos do Magento de forma que não seja necessário ao interpretador de códigos (PHP) navegar por várias pastas até encontrar o arquivo de sistema necessário pois tudo estará em uma única pasta. Isso irá reduzir absurdamente o número de leituras ao sistema de arquivos e você acaba ganhando em performance e economia de recursos do servidor.

Outras dicas importantes

Um recurso muito interessante para aumento de performance de uma loja é o uso de um CDN (Content Delivery Network). Esse tipo de recurso é exclusivo para entrega de arquivos estáticos, ou seja, imagens, css, js, etc. Utilizando esse tipo de recurso você irá ter uma resposta mais rápida do domínio do site já que essas requisições serão feitas a um outro domínio. Isso diminui o tempo de download da sua página (html) entregando o conteúdo mais rapidamente ao usuário.

A última dica está relacionada às tabelas de log do Magento que com o tempo vão se enchendo de dados e podem acabar comprometendo a performance de leitura do banco devido ao seu tamanho. Mas isso é assunto para um próximo post então fique ligado!

Share This :

About admin

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *