O que é HTTP/2?
HTTP/2 é uma revisão importante do protocolo HTTP (padronizada pela RFC 7540) que introduz enquadramento binário, multiplexação, compressão de cabeçalhos e push do servidor para melhorar significativamente o desempenho web em relação ao HTTP/1.1.HTTP/2 em comparação com HTTP/1.1
| Recurso | HTTP/1.1 | HTTP/2 |
|---|---|---|
| Formato | Baseado em texto | Binário |
| Conexões | Múltiplas (6 a 8 por host) | Uma única multiplexada |
| Tratamento de requisições | Sequencial | Fluxos paralelos |
| Compressão de cabeçalhos | Nenhuma | Compressão HPACK |
| Push do servidor | Indisponível | Compatível |
| Priorização | Nenhuma | Prioridades de fluxo |
Como funciona o HTTP/2
HTTP/1.1 (Head-of-Line Blocking):
Connection 1: Request A ──────────► Response A
Connection 2: Request B ──────────► Response B
Connection 3: Request C ──────────► Response C
(Multiple connections, sequential per connection)
HTTP/2 (Multiplexing):
Single Connection:
├── Stream 1: Request A ──► Response A
├── Stream 2: Request B ──► Response B
├── Stream 3: Request C ──► Response C
└── All interleaved on same connection
Principais recursos
Camada de enquadramento binário
HTTP/2 Frame Structure:
┌─────────────────────────────────────┐
│ Length (24 bits) │
├─────────────────────────────────────┤
│ Type (8 bits) │ Flags (8 bits) │
├─────────────────────────────────────┤
│ Stream Identifier (32 bits) │
├─────────────────────────────────────┤
│ Frame Payload (variable) │
└─────────────────────────────────────┘
Compressão de cabeçalhos HPACK
| Cenário | Cabeçalhos HTTP/1.1 | Cabeçalhos HTTP/2 |
|---|---|---|
| Primeira requisição | ~800 bytes | ~800 bytes |
| Requisições seguintes | ~800 bytes cada | ~20-50 bytes (indexados) |
Priorização de fluxos
Priority Tree:
Root (connection)
├── CSS (weight: 256, high priority)
├── JavaScript (weight: 220)
└── Images (weight: 110, lower priority)
Requisitos do servidor
| Servidor | Suporte a HTTP/2 |
|---|---|
| nginx | 1.9.5+ |
| Apache | 2.4.17+ (mod_http2) |
| Node.js | 8.4+ (nativo) |
| IIS | Windows 10/Server 2016+ |
Benefícios de desempenho
- Latência reduzida: uma única conexão elimina o custo do handshake TCP
- Melhor compressão: redução de 85% a 90% no tamanho dos cabeçalhos em requisições repetidas
- Carregamento paralelo: todos os recursos carregam simultaneamente
- Push do servidor: envia recursos proativamente antes que o navegador os solicite
Boas práticas
1. Ative TLS: HTTP/2 exige HTTPS na prática (os navegadores o impõem)
2. Reduza o domain sharding: vários domínios agora prejudicam o desempenho
3. Pare de concatenar arquivos: a multiplexação torna o agrupamento menos necessário
4. Use o push do servidor com cuidado: envie apenas recursos críticos
5. Monitore o desempenho: verifique se HTTP/2 melhora seu caso de uso específico
HTTP/2 oferece melhorias significativas de desempenho para a maioria dos sites por usar as conexões de rede com mais eficiência.