Cursos Magento

Cache Magento: Como limpar, quando e onde?

,

Publicado em 04 de outubro de 2022

Não precisamos mexer há muito tempo com o Magento para ver que ele possui vários tipos diferentes de cache.

Basta digitar bin/magento cache:status e já teremos uma lista de caches diferentes. Também podemos encontrar algo bem parecido no painel administrativo. Basta navegar até Sistema > Ferramentas > Gerenciamento de caches.

Nesta mesma tela também podemos notar alguns botões para limpeza de caches específicos. Isto é, além de poder selecionar e limpar um ou mais caches pelo painel, também temos outros botões:

Os exemplos acima são da Fire Store – uma loja Magento pronta para o Brasil e que vem com alguns módulos que implementam caches adicionais. Mas na prática, a maioria das lojas terá a maioria destes caches à sua disposição.

Quando limpar os caches

Geralmente limpamos os caches nas seguintes situações:

  • Ao instalar ou atualizar módulos e temas
  • Ao atualizar o Magento para uma nova versão
  • Para tornar imediata uma configuração específica, ou de página e blocos

E claro, devemos sempre fazer isso em momentos de pouco movimento na nossa loja.

Note que os caches, pouco tem a ver com o processo de reindexação. Você não precisa limpar os caches após realizar um reindex. O reindex por sua vez, deve ser feito de forma automática (cron), após uma instalação limpa do magento, ou quando houver algum tipo de problema pontual.

Onde os caches são salvos?

Depende. Isto é, depende das configurações da sua loja e do tipo de cache.

Os tipos mais comuns estão relacionados às configurações da loja, conteúdo de blocos estáticos e o que chamamos de full page cache.

Estes e outros caches são geralmente salvos na pasta <magento>/var/cache e <magento>/var/page_cache.

No entanto, eles também podem ser salvos em memória. Isto é feito geralmente com o uso de Redis.

O Redis também pode ser usado para salvar informações de sessão dos usuários, armazenando assim informações de carrinho e muito mais.

Como saber se minha loja está usando Redis?

Você pode verificar isso olhando as configurações de sua loja em <magento>/app/etc/env.php.

Neste arquivo você poderá encontrar as informações de configuração relacionadas ao local onde a sessão, cache de front end e full page cache são salvas.

Nele você encontrará 'save' => 'redis' se o tipo de cache utilizado for Redis, ou `’save’ => ‘files’ se estiver sendo salvo em arquivos.

Caches de imagens

Fotos de produtos podem conter marca d’água e serem redimensionadas para tamanhos específicos. O resultado destas modificações também são salvos em cache. Tipicamente, estes arquivos são salvos na pasta <magento>/pub/media/catalog/product/cache.

Caches de classes

Em modo produção, as classes do Magento são geradas na pasta <magento>/generated e isso precisa acontecer com o comando bin/magento setup:di:compile.

Além disso, é possível que suas classes sejam cacheadas pelo OPCache – um módulo PHP. Digite php -i | grep opcache.enable para ver se o OPCache está habilitado.

JavaScript e CSS

O Magento também pode unir, minificar e cachear arquivos CSS. O resultado é salvo na pasta <magento>/pub/static.

Estes arquivos por sua vez são também salvos no cache do navegador usando headers de caches.

O Magento também se encarrega de criar uma reescrita de url, e estes arquivos são sempre servidos em uma pasta dinâmica.

Por exemplo: https://magenteiro.com/static/version1664857270/frontend/Magenteiro/magenteiro/pt_BR/css/styles-l.css

Toda vez que o conteúdo estático é gerado (com o comando bin/magento setup:static-content:deploy) um novo número é criado.

Desta forma se evita que o navegador faça cache deste tipo de arquivo de forma incorreta, independente de mecanismos adicionais de cache utilizados.

Leia também: 11 Comandos do terminal que todo lojista deveria conhecer

As tags

Os caches podem ser usados por módulos de terceiros. Isto é, além dos módulos do próprio Magento, outros módulos podem salvar informações em caches existentes, ou mesmo implementar um novo tipo de cache.

A organização de cada valor salvo é feito através de marcadores (tags). Cada valor de cache é associado à uma dessas tags. E cada conjunto de cache (aqueles exibidos no painel) são associados a uma tag.

Os botões de limpeza de cache

Cada um dos botões e opções que vimos acima têm uma finalidade, e limpam caches específicos. São eles:

  • Liberar cache armazenado – Limpa todos os itens do cache, independente da tag. Se a sua loja salva caches em um local diferente, eles também serão removidos neste processo. Cache de página armazenado no Redis é limpo com esta ação, inclusive.
  • Liberar Cache do Magento – Limpa todos os caches padrão (var/cache). Caches da base default do Redis também são limpos e parcialmente regerados. Isto inclui caches de configuração, bloco, templates, cms, e outros.
  • Liberar Cache das Imagens – Limpa imagens que foram redimensionadas, e marca d’água adicionadas. Os arquivos ficam em <magento>/pub/media/catalog/product/cache. As imagens serão geradas novamente quando forem requisitadas, ocasionando algum atraso no primeiro carregamento.
  • Liberar Cache JavaScript/CSS – Limpa arquivos de CSS e JS salvos em cache.

Outras limpezas de cache

Caches externos como Redis, Varnish, OPCache, CDN, e outros nem sempre são geridos pelo Magento.

Em outras palavras, estes caches podem afetar seu processo de deploy em algumas situações específicas.

Nesses casos, você talvez queira limpar estes caches manualmente.

Redis

Você pode realizar a limpeza total de todas as bases do redis com o comando redis-cli flushall. Note que isso limpará não apenas caches de configuração e de página, mas também caches de ssessão.

Se a sua loja estiver usando o redis para este tipo de cache, usuários e administradores serão obrigados a logar novamente, e qualquer item salvo nos carrinhos de seus clientes serão perdidos.

OPCache

Você pode reiniciar o cache do OPCache ao reiniciar o serviço php-fpm do seu servidor. Para isso digite service php-fpm reload. Veja outras formas de se limpar este tipo de cache.

Varnish

Você pode limpar o cache do Varnish com o botão Liberar Cache do Magento.

No entanto, se quiser limpar absolutamente tudo, pode fazer isso por linha de comando: varnishadm "ban req.url ~ .".

Veja outras alternativas um pouco menos agressivas.

CDN

Por fim, se você usa um serviço de CDN, também precisará limpar os caches por lá em alguns casos.

O cache de imagem e arquivos estáticos nunca serão problema, já que eles são servidos em diretórios diferentes, como vimos acima. No entanto, se existir um cache de HTML por exemplo, é possível que, dependendo de como o configurou, você precise limpá-lo manualmente para uma atualização mais rápida.

Conclusão

Os caches do Magento e a compilação de classes são essenciais para seu bom funcionamento. O uso de todos os recursos exibidos acima lhe proporcionam uma loja Magento de altíssima performance.

No artigo 42 mil produtos em 1,5 segundo: Sim, é possível! nós mostramos um teste que fizemos com apenas alguns destes caches, e sem a utilização do Varnish.

Ao mesmo tempo que os caches são essenciais para o Magento, eles eventualmente nos enganam em processos de deploy. Isto é, algum comportamento esperado não ocorre, ou falhas acontecem por conta de partes de um deploy que foram cacheadas.

Isso pode ocorrer de diversas formas, dependendo do tipo de alteração que está sendo realizada, e de como o processo de deploy é feito.

A escolha da hospedagem também pode ter um papel importante para a correta manutenção de uma loja Magento. Ao mesmo tempo que uma hospedagem especializada pode lhe oferecer recursos de cache adicionais, uma não especializada pode não lhe oferecer meios de gerenciar seus próprios caches.

No Magento 2: O Curso trago uma seção inteira onde mostro como configurar um servidor do zero com Magento. Se você já faz parte do nosso Clube, não esqueça de desbloquear o curso e começar a assistir.

Vem com a gente?

Até a próxima.

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

Deixe seu comentário

[fbcomments url="https://www.magenteiro.com/blog/magento-2/cache-magento-limpar/"]