Modificações necessárias para usar o verniz no Magento CE

14

Estou lutando para encontrar bons exemplos de trabalho de quais modificações são necessárias para permitir que o Varnish armazene em cache um site Magento.

Idealmente, eu gostaria de uma lista de tarefas, como coisas para desativar / ativar e onde procurá-las. Também seria bom ter a configuração do Varnish com a qual essas alterações foram projetadas para funcionar.

O guia de desempenho do Magento fala muito sobre o verniz, então eu sei que isso já foi feito antes, mas na verdade não explica como fazê-lo funcionar.

SimonJGreen
fonte

Respostas:

2

Eles têm um módulo oficial aqui . Inclui tudo o que você precisa (configuração de verniz, módulo, ...)

Kenny
fonte
19

O verniz é ideal para você?

O verniz não é o desempenho definitivo do Magento. É ótimo compensar a carga de bots e vitrines - mas não deve ser sua primeira porta de escala para tornar sua loja mais rápida.

De fato, a implementação do Varnish deve ser a última modificação de desempenho em sua loja. Somente solte-o quando estiver vendo os tempos de carregamento da página que o Magento é capaz de fornecer sem ele (por exemplo, <600ms de carregamento da página).

Sua loja ainda precisa ser rápida

Como o Varnish ainda exige pelo menos um único carregamento de página para preparar o cache, isso significa que seu desempenho não armazenado em cache ainda precisa ser muito bom. A grande maioria dos URLs únicos (hits de navegação em camadas, consultas de pesquisa etc.) nunca acabará sendo veiculada pelo Varnish, a menos que:

a) Seus TTLs são tão altos que uma consulta de pesquisa de 4 dias atrás ainda é válida hoje
b) A presença no site é tão vasta que os URLs são preenchidos em um período muito curto de tempo

Você também deve considerar que nem todas as lojas se prestam ao verniz . Qualquer site que incentive os usuários a criar uma sessão pessoal (por exemplo, faça login, adicione ao carrinho etc.) no início da jornada do cliente significa que o Varnish será redundante.

Por exemplo, sites de compras particulares incentivam o login do usuário no local, no entanto, ao fazer isso, significa que o Varnish nunca realmente possui conteúdo não exclusivo que pode armazenar em cache. Portanto, suas taxas de acerto serão drasticamente baixas e não haverá nenhum benefício em usar o Varnish.

Conteúdo novo ou taxas de acerto mais altas

Taxa de acertos do verniz
Imagem cortesia de magestack.com

Usar o Varnish de maneira eficaz é encontrar um equilíbrio entre o conteúdo obsoleto e a quantidade de visitantes em seu site.

Se você tem um site ocupado - é provável que você consiga sair com TTLs mais baixos e ainda tenha uma alta taxa de acerto de verniz - e também continue a ter TTLs baixos - assim, com conteúdo mais atualizado. Portanto, suas alterações de estoque / preço são refletidas rapidamente e o cache é continuamente preparado a partir do volume de passos.

Se você possui um site de baixo tráfego, precisará fazer um compromisso. Aumente seus TTLs para garantir uma taxa de acerto mais alta - ou tenha conteúdo atualizado. Você não pode ter os dois. Sim, você pode executar uma ferramenta de rastreamento / spider continuamente - mas os recursos que isso consumiria e o grande volume ou URLs que podem ser rastreados (geralmente na casa das dezenas de milhares de lojas pequenas ) significa que isso simplesmente não é eficaz. Geralmente, lojas menores se beneficiariam mais de uma boa extensão FPC e de uma configuração de servidor altamente otimizada.

Mas é claro que posso usar o Varnish mesmo quando os usuários estão conectados, e quanto ao cache por usuário ou ESIs?

ESIs

Os ESIs são um excelente utilitário para manter o conteúdo no cache e ainda ter blocos dinâmicos na página. Mas, para ser usado com eficiência, você precisa minimizar a quantidade de retornos de chamada ao mínimo. Há um pequeno módulo inicial que você pode usar como base para esse processo - apenas certifique-se de apertar as brechas de segurança nele, é muito inseguro por padrão - não há restrições quanto ao layout do manipulador que você pode / não pode carregar

Cada vez que o bootstrap do Magento é carregado, ele atinge uma penalidade de desempenho de cerca de 200ms - antes mesmo de carregar uma coleção / renderizar um bloco etc. Portanto, se você tiver mais de 3x ESIs, é provável que você tenha acabado com tempos de carregamento de página mais lentos usando Varnish + ESIs para conteúdo dinâmico, do que apenas ignorar o Varnish e passar a solicitação diretamente para o próprio Magento.

Então, para realmente usar os ESIs de maneira eficaz, você precisa combinar várias solicitações em uma única solicitação.

Por exemplo, uma página de exibição de categoria que lista 20 produtos precisa mostrar níveis de estoque precisos. Então você usa ESI para cada bloco na página. Seriam 20x solicitações de estoque ESI. Embora as solicitações de estoque sejam muito leves, a execução de 20x delas simultaneamente prejudicaria o desempenho. Em vez disso, você pode atender a todo o bloco / coleção de 20 produtos e receber essa solicitação 1x. Mas carregar e renderizar a coleção é provavelmente o elemento mais lento da página, então você não ganhou muito.

O uso do ESI precisa efetivamente de planejamento e execução adequados, ou você terá um site mais lento do que não usar o Varnish.

Cache por usuário

Depois, há a alternativa de usar um cache específico do usuário. Essa é uma péssima idéia, a menos que você tenha um site com pouco tráfego. Sua taxa de acertos será terrivelmente baixa - pois as chances de um visitante acessar a mesma página em que eles já foram são muito baixas. E para cada cliente, essa página de 6 KB estará ocupando cada vez mais espaço na sua lixeira de verniz.

Por exemplo, se você alocou 1 GB ao Varnish. Em um site típico em que os usuários visualizam 8 páginas por visita, em média 6 dessas páginas serão únicas. São 28 visitantes por 1 MB de armazenamento. Em seguida, considere suas imagens, CSS e JS - estas (felizmente) serão comuns, mas ainda assim provavelmente ocuparão uma boa quantidade de 7-800 MB de seu armazenamento disponível. Isso deixa 200 MB de armazenamento restante, cache suficiente para 5.600 visitantes únicos.

Bem, eu não ligo, eu só quero verniz

Ok, você precisará fazer o seguinte:

  1. Instale um terminador SSL para ficar em frente ao Varnish (por exemplo, stud / pound / nginx)
  2. Instale o verniz no servidor
  3. Certifique-se de configurar X-Forwarded-Forcorretamente
  4. Instale um módulo de verniz na sua loja
  5. Configure suas VCLs de verniz para excluir extensões de terceiros

Como os três primeiros pontos estão além do escopo desta resposta, deixarei isso para você. O ponto 4 é brincadeira de criança e, com o ponto 5 - continue lendo.

O mais importante sobre a implementação do Varnish é garantir que você nunca armazene em cache o conteúdo que nunca deve ser armazenado em cache.

Por exemplo.

  • Retornos de chamada do gateway de pagamento
  • Visão geral do carrinho
  • Visão geral da minha conta do cliente
  • Caixa (e respectivas chamadas Ajax)

etc.

Para os principais URLs do Magento, há uma lista bastante padrão de URIs que você pode escapar no Varnish:

admin|checkout|customer|catalog/product_compare|wishlist|paypal

Mas você também precisa considerar as extensões personalizadas / de terceiros em execução que possuem rotas, roteadores e namespaces personalizados. Infelizmente, não há uma maneira fácil de saber quais URLs dessas extensões podem e não podem ser armazenados em cache. Portanto, você precisa avaliar cada caso a caso.

Como regra, sempre que estivermos configurando o Varnish, começaremos identificando as respectivas rotas, roteadores e namespaces que eles podem ocupar e partir daí. Fazemos isso via SSH:

grep -Eiroh "<frontName>.*</frontName>" community | sed "s/<frontName>//gI;s#</frontName>##gI" | sort -u
grep -A10 -ir "<rewrite>" community | grep "<from>"
grep -A5 -ir "<routers>" community 
grep -Eiroh "<frontName>.*</frontName>" local | sed "s/<frontName>//gI;s#</frontName>##gI" | sort -u
grep -A10 -ir "<rewrite>" local | grep "<from>"
grep -A5 -ir "<routers>" local 

Isso não fornecerá uma lista definitiva de URLs, mas quase certamente fornecerá uma entrada para você.

Não podemos enfatizar o quão importante é nunca armazenar em cache conteúdo que não deveria ser armazenado em cache. Os resultados podem ser catastróficos.

Em suma

Como em qualquer outra otimização de desempenho do servidor Magento, implementado e ajustado corretamente, pode realmente trazer benefícios. Porém, simplesmente deixar o software sem configurá-lo adequadamente não apenas tornará sua loja mais rápida, mas também potencialmente mais lenta, mais insegura e menos confiável.

Ben Lessani - Sonassi
fonte
@SimonJGreen. Se você ficou satisfeito com a resposta, marque-a como aceita. O Beta precisa de respostas mais aceitas para se formar.
Ben Lessani - Sonassi
Obrigado pela resposta. Mas e o passo 'Configurar apache e Varnish'? Apenas 'instalar o verniz' não é suficiente.
Yaroslav Rogoza
Meu argumento era que você não deveria considerar o verniz como uma solução em primeiro lugar. O verniz é fazer com que sites rápidos usem menos recursos , e não sites lentos rapidamente . A maioria das pessoas o usa pelos motivos errados. Sem mencionar que a configuração adequada não é do tamanho 1. Você precisa levar em consideração como ela se encaixa na imagem maior da infraestrutura, como ela interage com o terminador SSL, como você lida com o balanceamento de carga, quais são suas definições e exclusões TTL. Isso NÃO É NECESSÁRIO para sites de baixo tráfego, eles não têm condições de mantê-lo preparado.
Ben Lessani - Sonassi
Para qualquer pessoa em um Mac usando os comandos de pesquisa de Ben, observe que a versão OSX do sed requer sinalizadores diferentes. Se você instalar o gnu-sed, ele funcionará como mostrado aqui.
benz001