HTTP/1.1 x HTTP/2
Uma Breve História do HTTP
Se vamos falar sobre a transição de HTTP/1.1 para HTTP/2, vale a pena fazer uma rápida viagem de volta aos anos 90 encharcados de flanela. Naquela idade, o HTTP era um protocolo simples para um trabalho simples – transportar documentos de um servidor da Web para o seu computador da maneira mais eficiente verosímil. Isso porque a web era simples, feita de documentos e um amontoado de imagens que não davam trabalho para o hardware da idade lançar por aí.
HTTP, que significa Protocolo de Transferência de Hipertexto, teve ampla adoção no início dos anos 1990 para facilitar isso, transferindo documentos de “hipertexto”. Eram documentos simples compostos principalmente de texto e algumas imagens, marcados com HTML para juntar formatação e links para outros documentos de hipertexto. Em 1996, a especificação 1.0 foi adotada. Esta versão era elegante e simples para as necessidades da web de meados dos anos 90 – faça uma conexão, baixe um registro, feche a conexão e repita para cada registro necessário para exibir uma página da web.
No final dos anos 90, no entanto, as coisas começaram a mudar. A web estava evoluindo rapidamente para além de um Glorificado Escolha sua própria proeza em todo o mundo, pleno de documentos vinculados para clicar. As pessoas começaram a comprar e vender coisas, necessitando de segurança. Além das imagens, as pessoas queriam presenciar a vídeos, editar documentos e enviar cartões engraçados animados de seus navegadores. A estratégia de uma conexão, um registro era bastante lenta para esses novos casos de uso.
Portanto, em 1999, o órgão supervisor w3 atualizou a especificação HTTP para a versão 1.1. Esta versão foi um paliativo, adicionando recursos à especificação 1.0 destinada a melhorar a velocidade e a eficiência dos servidores da Web que alimentam esta novidade versão “hipermídia” da Web.
E portanto, a inovação meio que… parou. Uma vez que tenho certeza de que você sabe, a web mudou mais entre 1999 e 2015 do que entre 1996 e 1999, mas durante esses 16 anos vivemos a especificação HTTP/1.1, encaixando cada vez mais aplicativos modernos na especificação antiga.
A transição HTTP/1.1 para HTTP/2
O ponto de ruptura no HTTP/1.1 foi obtido muito antes da introdução do HTTP/2 em 2015. Na verdade, o Google estava trabalhando em seu próprio substituto para HTTP/1.1 desde o início de 2010, chamado SPDY (pronuncia-se “speedy”). Oriente protocolo usou a infraestrutura existente criada para HTTP/1.1, mas modificou porquê as solicitações funcionavam na infraestrutura. O SPDY usou a multiplexação para encolher vários recursos de forma eficiente em uma única conexão e pode ser “portado de volta” para aplicativos existentes com uma estrato de tradução.
Faz sentido que o Google assumisse a liderança nisso, já que eles vinham desenvolvendo aplicativos baseados na web cada vez mais complexos que funcionavam mais porquê aplicativos de desktop do que porquê sites, porquê Gmail e Google Apps. Na verdade, o protocolo SPDY foi tão muito projetado que o W3 o usou porquê base para o HTTP/2.
Portanto, em 2015, o w3 adotou oficialmente a especificação HTTP/2 baseada no SPDY, e todos os principais navegadores começaram a oferecer suporte ao protocolo.
Por que HTTP/2 é mais rápido que HTTP/1.1
Hoje, o noção de “webpages” é anacrônico, da mesma forma que “gravar” alguma coisa com seu smartphone. Os sites modernos funcionam muito mais porquê aplicativos, com um fluxo jacente de dados bidirecional sendo uma secção forçoso de sua funcionalidade.
Por exemplo, quando você está digitando alguma coisa em um Google Doc, porquê estou digitando oriente item agora, cada pressionamento de tecla envia dados para os servidores do Google. Os servidores do Google processam esses dados e, em seguida, enviam atualizações de volta ao seu navegador com o texto que você digitou, juntamente com outras informações úteis, porquê sugestões, o último status de edição do documento e muito mais. Sobre HTTP/1.1, cada um de seus pressionamentos de tecla iniciaria uma novidade conexão com o servidor, para enviar cada caractere digitado pela rede. Portanto, seu navegador teria que “pingar” incessantemente o servidor do Google para ver se o status do documento mudou, para juntar o caractere à tela que você está olhando. Isso é um monte de conexões, e cada uma leva um tempo valedoiro.
No entanto, com HTTP/2, é essencialmente um fluxo bidirecional jacente em uma única conexão. O servidor do Google está sempre escutando os dados vindos do seu navegador, e seu navegador está sempre escutando os dados vindos do Google. Não há mais envio de dados, espera por resposta, atualização de tela, envio de mais dados, espera por resposta, etc. Em vez disso, tudo acontece em tempo real. Dessa forma, uma “página” da web, porquê um Google Doc, pode ser atualizada com tanta frequência que parece um aplicativo nativo em seu computador.
Estas são as diferenças de cima nível entre HTTP1 e HTTP2:
- HTTP2 é binário, em vez de textual
- HTTP2 é totalmente multiplexado, em vez de ordenado e bloqueador
- HTTP2 pode, portanto, usar uma conexão para paralelismo
- HTP2 usa compactação de cabeçalho para reduzir a sobrecarga
- O HTTP2 permite que os servidores “empurrem” respostas proativamente para os caches do cliente
Por que você deve mudar para HTTP/2
Quando a Greenlane realiza auditorias técnicas de sites, mudar de HTTP/1.1 para HTTP/2 é uma das recomendações mais comuns e impactantes que fazemos. Muitas vezes, podemos melhorar drasticamente o desempenho de um site, com muito pouco dispêndio ou gasto de tempo.
Talvez seu negócio não tenha componentes dinâmicos. Talvez suas páginas sejam principalmente composições estáticas de texto e imagens, assim porquê nos velhos tempos da web. Isso é ótimo – no seu caso, HTTP/2 é uma fruta extremamente fácil de encontrar! Simplesmente atualizar sua hospedagem para usar HTTP/2 irá aligeirar dramaticamente a entrega de seu teor aos usuários, já que todo o teor de sua página virá pelo canudo em uma conexão em vez de várias conexões.
É tão importante que provavelmente é um teste de aprovação/reprovação no algoritmo do Google – se usarmos o Lighthouse do Google para testar uma página, a utensílio nem oferece recomendações para melhorar sua entrega HTTP/1.1 – ela simplesmente diz para atualizar para HTTP /2.