HTML img vs Next.js Image - Performance
Demonstração das diferenças de performance entre tag img e componente Image do Next.js
Controles
📊 Métricas de Performance
🖼️ Comparação de Imagens
Diferenças: O Next.js Image oferece otimização automática, lazy loading, redimensionamento e formatos modernos. Teste trocando imagens e observe os tempos de carregamento.
HTML img (Básico)
HTML img
❌ Sem otimização automática
❌ Sem lazy loading
❌ Sem redimensionamento
❌ Pode causar layout shift
Next.js Image (Otimizado)
Next.js Image
✅ Otimização automática
✅ Lazy loading nativo
✅ Redimensionamento automático
✅ Previne layout shift
🔄 Auto-Redimensionamento com URLs Externas
Demonstração: O Next.js Image pode redimensionar automaticamente imagens de URLs externas, otimizando o tamanho e performance. Compare como a mesma imagem grande é servida em diferentes tamanhos.
HTML img (Original)
❌ Carrega imagem original (800x600)
❌ Sem redimensionamento
❌ Maior uso de banda
Next.js Image (Pequeno)
✅ Redimensiona automaticamente
✅ Otimiza formato (WebP/AVIF)
✅ Menor uso de banda
Next.js Image (Médio)
✅ Redimensiona automaticamente
✅ Qualidade configurável (85%)
✅ Balanceamento ideal
💡 Como Funciona o Auto-Redimensionamento
URL Original: https://picsum.photos/800/600
Next.js redimensiona automaticamente baseado no:
- • sizes: Define breakpoints responsivos
- • container: Tamanho do elemento pai
- • device: Densidade de pixels da tela
- • quality: Configuração de qualidade (padrão: 75%)
🎯 Realidade: O Next.js calcula automaticamente o tamanho ideal baseado no contexto, não em valores fixos!
📈 Análise de Performance
🎯 HTML img Performance
⚡ Next.js Image Performance
💡 Como Testar o Impacto
- 1. Troque as imagens para ver diferentes tempos de carregamento
- 2. Digite no campo de texto para causar re-renders
- 3. Observe como os contadores de renderização mudam
- 4. Compare os tempos de carregamento
- 5. Abra o console para ver logs detalhados
🎓 Vantagens do Next.js Image
✅ Benefícios
- • Otimização automática: WebP, AVIF
- • Lazy loading: Carrega apenas quando visível
- • Redimensionamento: Tamanhos otimizados
- • Prevenção de layout shift: CLS reduzido
- • Performance: Carregamento mais rápido
- • SEO: Melhor Core Web Vitals
⚠️ Considerações
- • Requer configuração do domínio
- • Pode ter overhead inicial
- • Nem sempre necessário para imagens pequenas
- • Dependência do Next.js
- • Pode ser excessivo para projetos simples
⚙️ Propriedades do Next.js Image para Auto-Redimensionamento
📏 Propriedades de Tamanho
sizes=(max-width: 768px) 100vw, 50vw
fill className=object-cover
width=400 height=300
🎨 Propriedades de Qualidade
quality=75
priority=
placeholder=blur blurDataURL=...
🔧 Configuração para URLs Externas
next.config.ts:
images: { remotePatterns: [ { protocol: 'https', hostname: 'picsum.photos', port: '', pathname: '/**', }, ], }
💡 Importante: Sem essa configuração, o Next.js não permite carregar imagens de domínios externos por segurança!
🤔 Por que às vezes HTML img é melhor?
🎯 HTML img é melhor quando:
- • Imagens pequenas (ícones, avatares)
- • Carregamento único (não muda)
- • Sem otimização necessária
- • Projetos simples sem Next.js
- • Performance crítica inicial
- • Imagens já otimizadas
⚡ Next.js Image é melhor quando:
- • Imagens grandes (banners, fotos)
- • Múltiplos tamanhos necessários
- • Otimização automática desejada
- • Lazy loading importante
- • SEO e Core Web Vitals críticos
- • Responsividade complexa
💡 Teste os Diferentes Cenários
Pequena: HTML img é mais rápido (menos overhead)
Média: Performance similar (empate técnico)
Grande: Next.js Image é muito melhor (otimizações valem a pena)
💭 Dica: O overhead inicial do Next.js Image é compensado pelas otimizações em imagens maiores!