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-src em 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 ![alt](url), 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

  1. Abrir DevTools (F12)
  2. Ir para Network tab
  3. Fazer scroll da página
  4. 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 - Adicionado loading="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