Saltar para o conteúdo
BeoHosting
BeoHosting
Técnico

O Que São o HTTP/2 e o HTTP/3 e Porque São Importantes

BeoHosting Team··10 min de leitura de leitura
O Que São o HTTP/2 e o HTTP/3 e Porque São Importantes

A evolução do protocolo HTTP

O HTTP, ou Hypertext Transfer Protocol, é a base da comunicação na web. Compreender o protocolo é importante para escolher o alojamento certo. Sempre que abre uma página web, o seu navegador envia um pedido HTTP ao servidor, que responde com o conteúdo solicitado. O HTTP/1.1, introduzido em 1997, serviu a web durante quase duas décadas, mas, com a crescente complexidade dos sites modernos, as suas limitações tornaram-se cada vez mais evidentes. Os sites de hoje carregam, em média, 70 a 100 recursos por página, incluindo HTML, CSS, JavaScript, imagens e tipos de letra, e o HTTP/1.1 não foi concebido para uma comunicação tão intensa.

O HTTP/2 foi lançado em 2015 em resposta a estas limitações, trazendo alterações revolucionárias na forma como o navegador e o servidor comunicam. O HTTP/3, introduzido em 2022, vai um passo mais além ao substituir o protocolo TCP pelo QUIC, para ligações ainda mais rápidas e fiáveis. Compreender estes protocolos é importante para qualquer pessoa que trabalhe em desenvolvimento web ou alojamento, porque afetam diretamente a velocidade e o desempenho do site.

O HTTP/1.1 e as suas limitações

Como funciona o HTTP/1.1

O HTTP/1.1 utiliza um formato de texto para os cabeçalhos de pedido e resposta e funciona segundo o princípio pedido-resposta. O navegador envia um pedido para um recurso, espera pela resposta e depois envia o pedido seguinte. Isto é conhecido como o problema do head-of-line blocking, em que um pedido lento bloqueia todos os outros pedidos que estão na fila atrás dele. Para contornar esta limitação, os navegadores abrem várias ligações TCP paralelas ao mesmo servidor, normalmente 6 a 8 ligações, mas cada ligação exige um handshake TCP e uma negociação TLS separados, o que consome tempo e recursos.

Soluções alternativas do HTTP/1.1

Os programadores web utilizaram durante anos vários truques para contornar as limitações do HTTP/1.1. O domain sharding é uma técnica em que os recursos são distribuídos por vários subdomínios para que o navegador possa abrir mais ligações paralelas. Os sprites CSS combinam muitos ícones pequenos numa imagem grande para reduzir o número de pedidos. A concatenação junta vários ficheiros JavaScript ou CSS num único ficheiro grande. O inlining incorpora pequenos blocos de CSS ou JavaScript diretamente no HTML. Todas estas técnicas complicam o desenvolvimento e a manutenção do site e tornam-se desnecessárias com o HTTP/2.

A revolução do HTTP/2

Multiplexing

A inovação mais importante do protocolo HTTP/2 é o multiplexing, que permite enviar vários pedidos e respostas em simultâneo através de uma única ligação TCP. Em vez de esperar por uma resposta antes de enviar o pedido seguinte, o navegador pode enviar todos os pedidos de uma só vez e o servidor responde assim que tiver os dados prontos. Isto elimina o head-of-line blocking ao nível da aplicação e acelera drasticamente o carregamento de páginas com muitos recursos. Uma ligação substitui a necessidade de 6 a 8 ligações paralelas, o que poupa memória e tempo de processador em ambos os lados.

Compressão de cabeçalhos com HPACK

O HTTP/1.1 envia os cabeçalhos como texto não comprimido a cada pedido. Os cabeçalhos de cookies podem ter vários kilobytes e são enviados a cada pedido ao mesmo servidor. O HTTP/2 utiliza o algoritmo HPACK para a compressão de cabeçalhos, que mantém uma tabela dos cabeçalhos enviados anteriormente e envia apenas as diferenças. Isto reduz o tamanho dos cabeçalhos em 85 a 95 por cento, o que é particularmente significativo para sites com cookies grandes ou muitos cabeçalhos personalizados.

Server Push

A funcionalidade Server Push permite que o servidor envie recursos de forma proativa ao navegador antes de este os solicitar explicitamente. Por exemplo, quando o navegador pede uma página HTML, o servidor pode enviar de imediato os ficheiros CSS e JavaScript que sabe que serão necessários. Isto elimina o atraso entre a análise do HTML e o envio dos pedidos dos recursos associados. Na prática, o Server Push deve ser usado com cuidado, porque o envio excessivamente agressivo de recursos pode consumir largura de banda com recursos que o navegador já tem em cache.

Formato binário

O HTTP/2 utiliza um formato binário em vez do formato de texto do HTTP/1.1. O formato binário é mais eficiente na análise, porque os computadores trabalham naturalmente com dados binários, mais resistente a erros porque tem uma estrutura de frames claramente definida e mais compacto porque não desperdiça bytes com delimitadores de texto e espaços em branco. Cada mensagem HTTP/2 é dividida em frames que pertencem a um determinado stream, e vários streams são multiplexados numa única ligação.

Priorização de streams

O HTTP/2 permite que o navegador atribua uma prioridade a cada pedido. Os ficheiros CSS que bloqueiam a renderização da página podem ter uma prioridade mais elevada do que as imagens que carregam abaixo da dobra. O servidor utiliza estas prioridades para decidir a ordem pela qual envia os dados quando a largura de banda não consegue satisfazer todos os pedidos em simultâneo. Isto resulta numa apresentação mais rápida do conteúdo visível da página, mesmo enquanto todos os recursos ainda estão a carregar.

O HTTP/3 e o protocolo QUIC

O problema do TCP

Embora o HTTP/2 resolva muitos problemas ao nível da aplicação, continua a utilizar o TCP para o transporte. O TCP tem o seu próprio problema de head-of-line blocking, porque, se um pacote se perder, todos os pacotes que estão atrás dele têm de esperar até que o pacote perdido seja reenviado e recebido. No HTTP/2, em que todos os streams partilham uma única ligação TCP, a perda de um pacote bloqueia todos os streams, mesmo aqueles cujos pacotes chegaram com sucesso. Em redes instáveis, como as redes móveis ou WiFi, isto pode ser um problema significativo.

Protocolo QUIC

O HTTP/3 substitui o TCP pelo protocolo QUIC, desenvolvido pela Google, que corre sobre UDP. O QUIC implementa a entrega fiável de dados de forma independente para cada stream, o que significa que a perda de pacotes num stream não bloqueia os outros streams. O QUIC também integra a encriptação TLS 1.3 diretamente no protocolo de transporte, eliminando a necessidade de um handshake TLS separado. O resultado é um estabelecimento de ligação mais rápido, porque o handshake do QUIC combina os parâmetros de transporte e criptográficos num único passo.

Ligação Zero Round Trip

O QUIC suporta o estabelecimento de ligação 0-RTT (Zero Round Trip Time) para visitas repetidas. Quando o utilizador volta a um site já visitado, o QUIC pode começar a enviar dados de imediato, sem qualquer handshake, utilizando os parâmetros criptográficos da sessão anterior. Isto é particularmente significativo para utilizadores móveis, que alternam frequentemente entre redes WiFi e móveis, porque a ligação QUIC sobrevive a uma mudança de endereço IP graças ao Connection ID, em vez da identificação por endereço IP e porta.

Migração de ligação

Uma ligação TCP é definida por um par de endereços IP e portas, o que significa que a ligação quebra quando o endereço IP muda. Quando um utilizador móvel passa do WiFi para a rede móvel, todas as ligações TCP quebram e têm de ser restabelecidas. O QUIC utiliza o Connection ID para a identificação da ligação em vez do endereço IP, o que permite uma migração suave entre redes sem interrupção da transferência de dados. O utilizador não se apercebe da transição e o site continua a carregar sem interrupção.

Desempenho na prática

Medições de velocidade

Na prática, o HTTP/2 traz uma melhoria de 15 a 50 por cento na velocidade de carregamento em comparação com o HTTP/1.1, dependendo da complexidade do site. Os sites com muitos recursos pequenos são os que mais beneficiam, porque o multiplexing elimina a sobrecarga de abrir várias ligações. O HTTP/3 traz uma melhoria adicional de 5 a 15 por cento em condições ideais, mas em redes instáveis com perda frequente de pacotes a melhoria pode ser de 30 por cento ou mais, graças à eliminação do head-of-line blocking ao nível do transporte.

Impacto nos Core Web Vitals

O HTTP/2 e o HTTP/3 melhoram diretamente as métricas Core Web Vitals que o Google utiliza para o ranking. Verifique o desempenho do seu site. O Largest Contentful Paint melhora porque os recursos carregam mais depressa em paralelo. O First Input Delay diminui porque o JavaScript é descarregado e executado mais depressa. O Cumulative Layout Shift melhora porque os tipos de letra e as imagens carregam mais depressa, reduzindo as mudanças de conteúdo. O Time to First Byte melhora com o HTTP/3 graças ao estabelecimento de ligação mais rápido.

Como ativar o HTTP/2 e o HTTP/3

Suporte do servidor

O HTTP/2 requer uma ligação HTTPS (um certificado TLS válido), porque todos os navegadores modernos suportam o HTTP/2 apenas sobre TLS. A maioria dos servidores web modernos, incluindo o Nginx, o Apache e o LiteSpeed, suporta o HTTP/2 com uma configuração simples. No Nginx, basta adicionar o parâmetro http2 na diretiva listen. O Apache requer a ativação do módulo mod_http2. O HTTP/3 requer suporte para o protocolo QUIC, atualmente oferecido pelo Nginx com o módulo quic, pelo LiteSpeed, pela Cloudflare e por outros fornecedores de CDN.

Verificação do protocolo

Pode verificar que protocolo HTTP o seu site utiliza através das Chrome DevTools. Abra o separador Network, clique com o botão direito no cabeçalho da coluna, adicione a coluna Protocol e atualize a página. Verá h2 para HTTP/2 ou h3 para HTTP/3 junto a cada pedido. Ferramentas online como o KeyCDN HTTP/2 Test e o HTTP/3 Check permitem uma verificação rápida sem instalar ferramentas.

Conclusão

O HTTP/2 e o HTTP/3 são melhorias significativas que trazem um carregamento mais rápido do site, uma melhor experiência do utilizador e um melhor ranking no Google. O multiplexing, a compressão de cabeçalhos e o server push do HTTP/2 eliminam muitas limitações do antigo protocolo HTTP/1.1. O HTTP/3, com o protocolo QUIC, resolve os problemas de perda de pacotes e de migração de ligação, sendo especialmente útil para os utilizadores móveis. Na BeoHosting, todos os planos de alojamento suportam o HTTP/2 e os nossos planos avançados incluem também suporte para HTTP/3, para o máximo desempenho do site.

BeoHosting Team

10+ anos de experiência — Especialistas em alojamento web e infraestrutura

  • Web Hosting
  • WordPress Hosting
  • VPS
  • Dedicated Serveri
  • Domeni
  • SSL
  • cPanel
  • LiteSpeed
  • Linux administracija
  • DNS

Última atualização: