Como otimizar o desempenho do Magento
Você chegou aqui porque quer saber como otimizar o desempenho do Magento, certo? Algumas pessoas costumam reclamar que a Plataforma Magento é lenta, mas saiba que é possível torná-la um aplicativo de e-commerce muito rápido.
Para isso você pode precisar de alguns recursos adicionais, como CPU e memória. Mas também precisará de tempo e conhecimento.
Para essa última parte – conhecimento – a lista abaixo deve te ajudar bastante.
Ative a Cache do Magento
Este é, naturalmente, o primeiro passo na otimização: habilite todos os caches disponíveis no “Magento Admin Panel”.
Comprimir imagens
Muitas pessoas esquecem que as imagens (PNG, JPG) podem ser compactadas, o que diminui bastante o tráfego entre o navegador e o servidor web. Não apenas as imagens usadas pela “skin” do Magento precisam ser otimizadas, mas também as imagens de catálogo. Várias ferramentas permitem comprimir lotes de imagens, por exemplo, a ferramenta online Smush.It. Um outro site muito bom é o TinyPNG
Servir conteúdo estático através de uma CDN
O conteúdo estático, como imagens, folhas de estilo CSS ou JavaScript, pode ser servido através de outros servidores mais otimizados para conteúdo estático e espalhados pelo mundo. Por exemplo, uma CDN pode ser usada para que o conteúdo estático seja sempre servido a partir de um local mais próximo do visitante do seu site. Isso é vital para as webshops que atendem clientes em todo o mundo ou em países grandes como o Brasil.
Mas fique atento, pois nem todas CDNs tem multiplos servidores espalhados pelo país. No Brasil, por exemplo, apenas a GoCache e a Akamai possuem multiplos pontos de presença (também conhecidos como PoPs). Já as CDNs como a CloudFlare, CloudFront e Fastly, possuem apenas um ponto, normalmente na cidade de São Paulo ou Rio de Janeiro.
Servir conteúdo dinâmico através de uma CDN
Essa é uma tecnologia muito nova e que trás um gigantesco ganho para e-commerces como Magento, Woocommerce, etc.
Basicamente, a CDN armazena as páginas do seu sistema. As páginas são mais pesadas em termos de processamento, pois consomem CPU e memória toda vez que são requisitadas pelos visitantes.
Ao guardar as páginas em cache, a CDN pode economizar até 90% do processamento de seu servidor.
Para isso, a CDN precisa ser capaz de identificar quais desses dados dinâmicos ela deve ou não requisitar novamente ao seu servidor. Esta é uma tecnologia bastante nova e sofisticada, portanto apenas algumas CDN a possuem, as chamadas “NextGen CDN” ou “CDN de última geração”. Na GoCache essa tecnologia se chama SmartCache e está disponível em todos os planos.
Desativar módulos Magento desnecessários
Ao desativar os módulos Magento que você não precisa, são utilizados menos recursos de seu servidor – simples assim. Os módulos podem ser desativados através da configuração no “Magento Admin Panel”, ou editando arquivos XML no app/etc/ modules. Por exemplo, desative Mage_Log que executa consultas em todas as solicitações, mas não é necessário se você coletar estatísticas do site usando programas externos.
Habilitar catálogos “flats” (ou planos) para webshops pequenos
Para webshops menores, mudar a estrutura EAV complexa para um catálogo plano pode economizar tempo. Esta otimização é um pouco duvidosa e depende de muitos parâmetros, então não tome esse passo de forma leve.
Conformidade do W3C
Embora se possa argumentar que isso é menos importante com a chegada do HTML5, ainda é um fato que, se suas páginas da web estiverem cheias de erros feios, o navegador terá dificuldade em interpretá-lo. Se você cumprir a conformidade do W3C, é fato que o mecanismo do navegador terá um trabalho fácil ao analisar seu código HTML.
Comprimir os dados de saída
Ao habilitar a configuração PHP zlib.output_compression, a saída gerada pelo PHP é compactada quando enviada para o navegador. Isso economiza banda de seu servidor.
Se preferir, você pode usar o módulo ap_ mod_deflate, que permite também a compressão de saída em outros formatos, além do PHP (CSS, JavaScript, outros arquivos de texto simples).
Configurar opções de PHP
A maioria das configurações do PHP realmente não influenciam o desempenho do Magento, apenas estabelecem determinados limites. Por exemplo, as configurações como memory_limit e max_execution_time não melhoram o carregamento da página, mas garantem de que certas ações não vão tomar tempo e processamento demasiado ou que não gerarão problemas de uso de memória.
Armazenamento de sessão
Com o Magento, as sessões podem ser armazenadas em arquivos ou no banco de dados (configurando app/etc/local.xml). Qual opção funciona melhor, realmente depende de como o ambiente de hospedagem está configurado. Se os bancos de dados MySQL funcionarem bem, o armazenamento de sessão no banco de dados poderá beneficiar seu site. Mas se o MySQL não está configurado corretamente, a melhor escolha pode ser arquivos.
Use um acelerador PHP
Com o opcode caching, a execução do PHP pode ser acelerada. Existem vários aceleradores PHP que fazem esse trabalho (APC, ZendOptimizer+, eAccelerator, XCache). Tanto o APC quanto o ZendOptimizer+ estão funcionando perfeitamente com o Magento.
Ajuste realpath_cache do PHP
Ao ajustar o realpath_cache_size para, por exemplo, 128K (padrão é 16K) e o realpath_cache_ttl para 86400, você pode conseguir uma boa melhora no desempenho. Certifique-se de não ficar sem memória, porque cada instância (ou child) Apache consumirá o tamanho de cache que foi configurado.
Use Apache mod_expires
Ao dizer ao navegador quais arquivos manter no cache e por quanto tempo, você pode otimizar o cache do navegador. Por exemplo, os arquivos JavaScript tendem a mudar muito menos, em seguida, arquivos CSS (pelo menos após primeiros estágios do site), mas talvez, depois que o site estiver maduro e no ar por alguns meses, você possa aumentar a “data de validade” destes arquivos na cache, melhorando ainda mais o desempenho.
Cuidado com 404 erros
Sempre que um arquivo (como uma folha de estilo ou imagem) não é encontrado, isso gera um erro 404. Como o padrão 404 do Magento é capturado pela aplicação do próprio Magento, isso faz com que o aplicativo reinicie a cada erro 404 encontrado. Verifique o log do Apache para garantir que todos os 404 erros sejam resolvidos.
Desativar o log do Magento
Dentro da configuração do Magento, você pode ativar o log na guia Desenvolvedor. Dependendo dos módulos habilitados, isso pode gerar muitos dados pra serem gravados no sistema de arquivos, diminuindo a velocidade da sua loja virtual. Como os logs só são necessárias para depurar algum erro, no uso diário, é melhor desabilitar os logs completamente.
Otimização de tabela MySQL
Através do phpMyAdmin, você pode executar o comando OPTIMIZE TABLE em tabelas específicas do banco de dados do Magento. Quando uma tabela está desordenada, esse comando pode melhorar consideravelmente o desempenho. Isso funciona não apenas para as complexas tabelas EAV, mas também para tabelas MySQL regulares que são usadas com frequência (por exemplo, core_config_data).
Mesclar CSS e JavaScript
Ao combinar todos os arquivos CSS e JavaScript em um único e grande arquivo, o navegador precisará fazer apenas uma solicitação HTTP para receber todo o conteúdo. Isso aumenta muito a velocidade da transferência dos dados para os usuários.
Para juntar esses dados, o módulo FooMan Speedster pode ser usado. O Magento 1.4 contém uma opção para juntar os CSS, enquanto os arquivos JavaScript já são juntados por padrão.
Além de juntar os arquivos, o crunching também é uma opção oferecida pelo FooMan Speedster: ele remove os espaços em branco da saída, mas quando já estamos utilizando compressão no CSS, essa opção é menos necessária.
Use o módulo compilador do Magento
O módulo compilador do Magento limita o número de diretórios que o PHP tem para pesquisar ao procurar arquivos PHP. Isso diminui o tempo de execução do PHP, o que acelera o Magento como um todo.
Lembre-se de que você precisa ter cuidado ao fazer alterações no seu sistema Magento enquanto o compilador Magento está habilitado. As atualizações só devem ser realizadas quando o compilador estiver (temporariamente) desativado.
Um truque muito elegante que acelera as coisas tremendamente é criar um tmpfs-mount especificamente para a pasta include/src. Observe que este tmpfs-mount precisa ser pelo menos 100Mb – de preferência 200Mb.
Ajustes no servidor MySQL
A configuração padrão do MySQL é muitas vezes suficiente para executar um ambiente de hospedagem geral, mas não é otimizado para o Magento. Ajustar configurações como query_cache_size pode aumentar drasticamente o desempenho, mas também é perigoso porque depende muito de outras variáveis (número de bancos de dados, número de tabelas por banco de dados, número de consultas, picos de uso).
Desativar módulos Magento locais
Se o seu site não precisar de módulos Magento locais, você pode optar por ignorar a busca de todos esses módulos. Dentro do arquivo app/etc/local.xml, você encontrará uma tag XML que permite que você faça isso.
Tenha cuidado com o HTTPS
Toda vez que você usa SSL entre o servidor web e o navegador, o processo de criptografia e decodificação é adicionado em ambos os lados. Também há uma pequena carga extra no tráfego gerado.
O site Magento roda um pouco mais rápido se você desativar SSL para todas ou ao menos algumas páginas. No entanto, este ganho é tão pequeno em comparação com os outros nesta página, que deve ser tratado com cautela. A banda que você economizou não será enorme, e atualmente o processo de criptografia/decriptografia ocorre em microssegundos.
No entanto, você irá remover a segurança que o HTTPS traz ao seu site e seus usuários e, com isso, você pode perder os clientes que são mais cautelosos e preocupados com segurança e cyber-ataques.
Magento na nuvem (cloud)
Embora as CDNs possam ser usadas para otimizar a banda para conteúdo estático e, em alguns casos, também o processamento do conteúdo dinâmico, rodar o Magento utilizando “cloud-computing” pode te dar mais escalabilidade em momentos de pico de processamento.
Sistema de arquivos baseado em memória para dados dinâmicos
A quantidade de acessos a disco será muito reduzida ao armazenar dados dinâmicos (diretórios var/cache, var/session) em um sistema de arquivos baseado em memória, como RAMdisk ou tmpfs. Além disso o acesso a estes dados em memória é extremamente mais rápido que em disco.
Desabilitar arquivos .htaccess do Apache
Ao utilizar arquivos .htaccess, você obriga o Apache a inspecionar cada diretório do “path” para ver se este arquivo está presente.
Ao mover essas diretivas de configuração do arquivo .htaccess para o arquivo de configuração do VirtualHost, desligando todos os arquivos htaccess, o tempo de execução do Apache será bem melhor.
Use Nginx ou Litespeed
Enquanto o servidor Apache é muito flexível em suas configurações, existem outros servidores web que são melhor otimizados quanto ao uso da memória. Ao substituir o Apache pelo Nginx ou Litespeed, você poderá acelerar ainda mais os scripts Magento. Ambos os webservers requerem configuração manual para permitir URLs amigáveis para SEO.
Use “lazyload” para imagens
Quando uma página está sendo carregada, um visitante pode perder muito tempo esperando o carregamento das imagens. Dependendo do número e tamanho dessas imagens, isso pode levar tempo considerável.
Em vez de carregar as imagens ao mesmo tempo que a página, você pode utilizar o efeito de LazyLoad JavaScript que garante que apenas as imagens visíveis (dentro da tela do navegador) sejam carregadas, enquanto que as imagens remanescentes são carregadas apenas quando o visitante se desliza para baixo.
Além de acelerar o carregamento da página, ainda irá economizar banda em seu servidor.
Minimizar o log do Apache
Se o log do Apache for minimizado, serão necessárias menos operações de escrita em disco, que são feitas em cada requisição de dados que seu servidor recebe.
É claro que um log mais simples também significa “menos visão” quando algo der errado.
Se precisar dos logs do Apache, uma alternativa é otimizar o sistema de arquivos no qual eles são armazenados. Por padrão, o Apache faz log no sistema de arquivos em “/var” – mas não há necessidade de habilitar coisas como o “journalizing” para esse sistema de arquivos, deixando-o assim mais rápido.
Use com sabedoria o “Full Page Cache”
Existem várias soluções de Cache de Página Completa (FPC) lá fora, sob a forma de extensões (LestiFPC, Enterprise Edition) ou soluções completas (Nginx, Varnish). Em todos os casos, o FPC não deve ter o primeiro foco. Quando a sua loja Magento está lenta, é devido razões específicas, e esses motivos precisam ser investigados.
Quando as páginas do seu e-commerce estão rápidas (graças ao FPC), mas suas páginas dinâmicas ainda estão lentas, perde-se a ideia geral dessas otimização, que é: ter um site rápido para atrair mais clientes, ter um posição melhor no Google, vender mais.
Então, em geral, o FPC deve ser implementado apenas para deixar ainda mais rápido um site que já é rápido, que já está muito bem configurado.
Ajuste apenas o que é necessário
Uma estratégia de ajustes é ajustar tudo ao máximo, literalmente tudo. Isso significa que você está ajustando o máximo desempenho e espremendo cada milissegundo de todos os seus componentes. No entanto, você também precisa do tempo e recursos para isso.
Outra estratégia é ajustar exatamente aqueles pontos que precisam de mais atençao. Isso é mais eficiente, mas exige que você saiba qual ajuste teria o maior impacto.
A grande questão de quais ajustes devem ser feitos primeiro não pode ser respondida sem uma análise personalizada. Normalmente, um especialista em desempenho de Magento precisaria entrar e verificar toda a loja antes que um conselho sólido fosse dado.
Você pode procurar no site Magento Performance Insights algumas dicas de por onde começar suas otimizações.
Este artigo foi traduzido de https://www.yireo.com/tutorials/magento/magento-performance/1056-magento-spo