Velocidade em PrestaShop sem quebrar nada
Este skill reúne o que foi medido e aplicado em lojas PrestaShop reais: o que realmente melhora, em que ordem convém fazer e onde se tropeça. Tudo está anonimizado.
As regras que não se quebram
- Cópia de segurança antes de cada alteração. De cada arquivo que se toca, das linhas de configuração que se alteram e da configuração do servidor. E um
volver.shque desfaça essa alteração específica. Detalhe emreferencias/01-metodo-seguro.md. - Medir antes e depois, com o mesmo método. Sem uma medida inicial não se pode dizer que algo melhorou. O método está em
referencias/02-medir.mde a ferramenta emscripts/medir.py. - Uma alteração de cada vez, e testá-la ativando e desativando. Para saber se uma opção ajuda, mede-se com ela e sem ela, alternando (A, B, A, B) e com várias cargas. Se não melhorar, desfaz-se.
- Nada em produção sem a permissão do dono da loja, dizendo antes o que vai ser tocado. Se houver uma cópia da loja, testa-se primeiro ali.
- Verificar o final, não apenas o início. Mesmos códigos HTTP que antes nas páginas-chave, zero erros de JavaScript novos (os que já existiam não contam, mas são anotados), imagens que carregam, e carrinho e checkout que funcionam.
- Avisar de cada alteração: o que foi tocado, onde está a cópia, como se desfaz e o que foi medido.
Ordem de trabalho, do mais rentável ao menos
| Passo | O quê | Referência |
|---|---|---|
| 1 | Medir a situação inicial (móvel 4G, primeira e segunda visita) | referencias/02-medir.md |
| 2 | Imagens: WebP em fotos de produto, no modelo e em banners/CMS | referencias/03-imagenes-webp.md |
| 3 | Recursos que bloqueiam a pintura: fontes, ícones, jQuery, reCAPTCHA, CCC | referencias/04-bloqueos.md |
| 4 | Cache do navegador para os estáticos | referencias/05-cache-navegador.md |
| 5 | Servidor: OPcache, MariaDB, PHP-FPM, sessões, DNS, CPU | referencias/06-servidor.md |
| 6 | Módulos de terceiros que chamam externamente ou bloqueiam | referencias/07-modulos-terceiros.md |
| — | Armadilhas já pisadas (ler antes de começar) | referencias/08-trampas.md |
O que mais pesa quase sempre são as imagens: banners em PNG de 2 a 5 MB são comuns. Numa loja a página inicial passou de 26,5 MB para 4,8 MB apenas com WebP nos banners, sem tocar em nenhuma imagem original.
Ferramentas
| Script | Para quê |
|---|---|
scripts/medir.py | Navegador real (Playwright) em móvel com 4G lenta e CPU ×4: FCP, LCP, carga, KB, requisições, recursos que bloqueiam, o mais pesado e erros de JavaScript, na primeira e segunda visita. |
scripts/revisar_cache.py | Quanto tempo o navegador guarda os CSS, JS, imagens e fontes de um site, e que as páginas e o JSON não são guardados. Apenas leitura. |
scripts/webp_al_lado.py | Cria imagem.png.webp junto a cada imagem de uma pasta (sem tocar a original), apenas se pesar pelo menos 10% a menos. Deixa um registro para desfazer. |
Modelos de configuração prontos para adaptar em plantillas/: negociação de WebP no nginx e no Apache, bloco de cache do navegador seguro para .htaccess, o parcial Smarty que pede o WebP apenas se existir e um modelo de aviso ao desenvolvedor de um módulo.
Como informar ao terminar
- O que foi alterado, loja por loja, com o número de antes e o de depois.
- Onde está a cópia e a ordem exata para desfazer.
- O que fica pendente e que decisão cabe ao dono da loja.
- O que foi visto de passagem e não foi tocado (erros que já existiam, módulos suspeitos).