Cursos Magento

Arquivos estáticos antigos sendo exibidos? Veja como resolver.

, ,

Atualizado em 01 de março de 2022

Arquivos estáticos como imagens, CSS e JavaScript geralmente são servidos acompanhando um cabeçalho (header) de cache. Este header diz ao navegador do visitante que não solicite novamente este arquivo durante os próximos dias ou meses caso ele volte a ser solicitado.

Como estes são arquivos que raramente sofrem algum tipo de modificação, não faz sentido solicitar eles várias vezes em uma mesma sessão. Armazená-los no cache do navegador do cliente poupa recursos importantes dos nossos servidores.

Esta é uma prática comum não apenas no e-commerce. Isso é feito ao passar o header Expires no retorno de requisições destes arquivos.

Sendo assim, toda vez que um destes conteúdos é atualizado, precisamos limpar o cache do navegador.

Isso não costuma ser um problema, e como administradores das nossas lojas, geralmente já atualizamos a página com a tecla Shift pressionada, justamente para ver o conteúdo atualizado.

Esta é uma queixa constante dos alunos dos cursos de Magento 2 do Magenteiro no nosso grupo exclusivo de alunos.

Bom dia,
Estou atualmente com um problema e preciso da vossa ajuda.
A empresa onde me encontro, tem atualmente um magento multistore na versão 2.1.12 e sempre que atualizo algo no site e faço um cache:clean ou cache:flush temos reclamações por parte de alguns clientes que deixam de conseguir logar-se no site por exemplo.
Na maioria dos casos os problemas resolvem-se com uma limpeza de cache/cookies por parte do utilizador no browser dele ou através da abertura de um browser em modo anónimo ou num outro browser.
Como posso evitar que isto aconteça?
Não acho isto normal, pois o utilizador não deve ser obrigado a limpar cache/cookies para poder usufruir normalmente do site.
Obrigado.

Problema: Cliente visualizando Js/CSS/Imagem antigo

Já para nossos clientes isso pode ser um pouco mais difícil, não é mesmo?
Não podemos pedir pra todo mundo limpar o cache antes de entrar na nossa loja virtual após uma atualização.

Uma forma de garantir que nosso cliente veja o conteúdo atualizado, é trocar a URL destes arquivos toda vez que uma atualização neles for feita. Desta forma, o navegador entenderá que aquele endereço nunca foi visitado antes, e baixará o conteúdo atualizado.

O Magento 2 faz isso nativamente ao “assinar conteúdos estáticos”. Este recurso é ativado por padrão, e faz com que os arquivos deste tipo sejam entregues em URL’s diferentes toda vez que recompilamos os arquivos estáticos com o comando bin/magento setup:static-content:deploy.

Verificando se a assinatura de conteúdo estático está ativa

Quando ativada, a URL dos arquivos estáticos sempre conterá o número da versão, como mostrado abaixo:

Este número coincide com o número que existe dentro do arquivo pub/static/deployed_version.txt.

Outra forma mais simples de ver se a assinatura de conteúdo estático está ativa, é digitando o comando abaixo:

bin/magento config:show dev/static/sign

Você pode ativar ou desativar o recurso com os comandos bin/magento config:set dev/static/sign 1 para ativar ou bin/magento config:set dev/static/sign 0 para desativar.

Se preferir, pode fazer isso pelo painel administrativo. As configurações ficam localizadas em Lojas > Configuração > Avançado > Desenvolvedor > Configurações de arquivos estáticos.

⚠️ O menu Avançado > Desenvolvedor não é exibido no modo production.

⚠️ A compilação de arquivos estáticos também não é necessária nos modos default ou developer. Sendo assim, a forma mais rápida de se ativar o recurso em uma loja em produção é usando a linha de comando, como mostrado acima.

Se você não está usando o modo production em sua loja em produção, isso poderá ser um problema. Em ambientes de desenvolvimento isso não é necessário, pois geralmente recarregamos as páginas sem recorrer ao cache do navegador.

O número aleatório é só uma formalidade

Caso não tenha notado ainda, você não encontrará a pasta pub/static/version123456/... em sua loja, mas encontrará ela sem o /version123456/.

O Magento cuida do redirecionamento para a pasta correta e ignora o /version123456/ na URL pra você. Você pode constatar isso olhando o arquivo /pub/static/.htaccess ou o arquivo /nginx.conf.sample.

A única finalidade deste recurso é ‘enganar’ o navegador quando seus conteúdos estáticos forem atualizados ou quando fizer um novo deploy em produção.

Lembre-se de configurar sua pasta pub corretamente, tornando ela a porta de entrada para sua loja.

Para mais detalhes, assista a aula “Como os arquivos estáticos são expostos” no Magento 2: O Curso. Esta aula estará presente na próxima atualização do curso (na 3ª Edição do mesmo) disponível para alunos novos e existentes.

Conclusão

O cache de imagens e conteúdo estático é algo nativo do Magento 2, e não é difícil usá-lo com eficiência e tirar proveito dele.

No entanto esta não é a única forma de se ganhar tempo no carregamento de uma loja.

No Magento 2: O Curso temos uma seção inteira destinada a mostrar como otimizar o Magento. O resultado dessas otimizações pode ser visto no nosso artigo “42 mil produtos em 1,5 segundo: Sim, é possível!“. É sem dúvida um excelente guia para ajudar a otimizar a performance de uma loja Magento e já comprovado por vários de nossos alunos.

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

Deixe seu comentário

[fbcomments url="https://www.magenteiro.com/blog/magento-2/assinatura-conteudo-estatico/"]