Arquivos estáticos antigos sendo exibidos? Veja como resolver.
Desenvolvimento, Gerenciar minha loja, Magento 2
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.
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.
- PagSeguro (PagBank) para Magento 1 recebe a Nova Geração - 9 de abril de 2024
- Recorrência no WooCommerce Sem Plugins Pagos - 28 de janeiro de 2024
- Chargeback. O que é, e como se livrar deles. - 19 de dezembro de 2023
Deixe seu comentário
[fbcomments url="https://www.magenteiro.com/blog/magento-2/assinatura-conteudo-estatico/"]