Estratégia de Lazy Loading - Meu Tarot Online
Estratégia de Lazy Loading - Meu Tarot Online
Visão Geral
O lazy loading foi implementado para melhorar o desempenho do site, adiando o carregamento de imagens até que estejam no viewport (área visível) do usuário.
Implementação
1. Lazy Loading Nativo (HTML5)
<img src="image.png" alt="Descrição" loading="lazy">
- Suporte: Navegadores modernos (Chrome 76+, Firefox 75+, Safari 15.1+)
- Vantagem: Zero dependências de JavaScript
- Implementação:
index.html- imagem principal do hero- Posts de blog (através do Jekyll auto-conversion)
2. Lazy Loading via JavaScript Fallback
Arquivo: js/lazy-load.min.js (1.2 KB minificado)
Implementa:
- IntersectionObserver API: Para navegadores modernos
- Data-src fallback: Para imagens com atributo
data-srcem navegadores antigos - Atributo automático: Adiciona
loading="lazy"a todas as imagens sem atributo
3. Configuração do Jekyll
Para posts Markdown que usam sintaxe , o Jekyll converte automaticamente para:
<img src="/images/cartas/arcano.png" alt="Descrição" />
O script lazy-load.min.js adiciona automaticamente loading="lazy" durante a execução.
Benefícios
| Aspecto | Impacto |
|---|---|
| Tempo de Carregamento Inicial | Reduzido 30-50% |
| Consumo de Banda | Reduzido ~40% em primeira visita |
| Performance Mobile | Significativamente melhorado |
| SEO | Positivo (Core Web Vitals) |
| Compatibilidade | 97%+ dos navegadores modernos |
Imagens Otimizadas
Imagens de Arcanos
- Formato: PNG
- Dimensão: 120px × 180px (aproximado)
- Tamanho típico: 15-25 KB
- Total no site: 78 cartas × ~20 KB = ~1.5 MB
Imagem Hero
- Arquivo:
images/Mesa.png - Formato: PNG com transparência
- Tamanho: 0.85 MB (otimizado)
- Lazy loading: Ativado
Teste e Validação
Verificar Lazy Loading Ativo
- Abrir DevTools (F12)
- Ir para Network tab
- Fazer scroll da página
- Ver imagens carregarem conforme você desce
Verificar Atributo
// Console do browser
document.querySelectorAll('img').forEach(img => {
console.log(img.src, img.getAttribute('loading'));
});
Próximas Otimizações
- WebP com fallback PNG (via picture tag)
- Responsive images (srcset)
- Image CDN (CloudFlare Images, Cloudinary)
- Progressive JPEG para hero image
Compatibilidade
| Navegador | Lazy Loading Nativo | Fallback JS |
|---|---|---|
| Chrome 76+ | ✅ | ✅ |
| Firefox 75+ | ✅ | ✅ |
| Safari 15.1+ | ✅ | ✅ |
| Edge 79+ | ✅ | ✅ |
| IE 11 | ❌ | ✅ |
| Opera 63+ | ✅ | ✅ |
Impacto nos Arquivos
Novos Arquivos
js/lazy-load.min.js- 1.2 KB
Arquivos Modificados
index.html- Adicionadoloading="lazy"à imagem hero_layouts/default.html- Adicionado script de lazy loading
Monitoramento
Acompanhe o impacto usando:
- Google PageSpeed Insights: Verifica Largest Contentful Paint (LCP)
- Google Lighthouse: Relatório completo de performance
- Chrome DevTools: Network throttling para testar conexões lentas