Sobes.tech
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