Middle
Quais são as diferenças entre os protocolos HTTP/1 e HTTP/2?
sobes.tech IA
Resposta da IA
As principais diferenças entre HTTP/1.1 e HTTP/2:
-
Multiplexação:
- HTTP/1.1: Processamento sequencial de pedidos numa única ligação. Para carregamentos paralelos, eram necessárias várias ligações TCP.
- HTTP/2: Multiplexação numa única ligação TCP. Permite enviar vários pedidos e receber respostas simultaneamente, sem bloqueio mútuo.
-
Compressão de cabeçalhos (HPACK):
- HTTP/1.1: Os cabeçalhos são transmitidos sem compressão, o que pode ser redundante com muitos pedidos.
- HTTP/2: Compressão de cabeçalhos usando o algoritmo HPACK. Reduz o tamanho dos dados transmitidos.
-
Priorização de fluxos:
- HTTP/1.1: Ausência de priorização.
- HTTP/2: O cliente pode atribuir prioridades a diferentes fluxos de dados, influenciando a sua ordem de processamento pelo servidor.
-
Push do servidor (Server Push):
- HTTP/1.1: O cliente deve solicitar explicitamente cada recurso (CSS, JS, imagens).
- HTTP/2: O servidor pode enviar recursos que considere necessários para mostrar a página antes de o cliente os solicitar.
-
Protocolo binário:
- HTTP/1.1: Protocolo de texto, relativamente fácil de ler.
- HTTP/2: Protocolo binário, mais eficiente para análise e transmissão.
Tabela comparativa:
| Característica | HTTP/1.1 | HTTP/2 |
|---|---|---|
| Multiplexação | Não (vários TCP) | Sim (uma TCP) |
| Compressão de cabeçalhos | Não | Sim (HPACK) |
| Priorização de fluxos | Não | Sim |
| Push do servidor | Não | Sim |
| Formato do protocolo | Texto | Binário |
| Problema de Head-of-Line Blocking | Presente (para um TCP) | Reduzido graças à multiplexação |
Exemplo de multiplexação (conceitual):
// HTTP/1.1: Requisições sequenciais
fetch('/resource1')
.then(() => fetch('/resource2'))
.then(() => fetch('/resource3'));
// HTTP/2: Requisições paralelas numa única ligação
// No navegador, isto acontece automaticamente para HTTP/2
// Conceitualmente, as requisições podem ser enviadas quase simultaneamente