O HTTP / 2 é uma nova maneira de fazendo seu site carregar muito mais rápido eliminando muitas ineficiências associadas à versão atual do HTTP. A melhor coisa sobre isso? Você não precisa se esforçar muito para colocá-lo em prática.

Ou você?

O que é HTTP / 2?

Quando HTTP1 e HTTP1.1 foram desenvolvidos originalmente, a web era muito diferente do que é hoje. Websites tinham menos recursos (arquivos JavaScript, arquivos CSS, imagens) do que hoje. As conexões à Internet não eram muito rápidas e os usuários não eram muito exigentes com a velocidade de carregamento do site.

Os usuários começam a ficar com comichão quando um site leva mais de 3 segundos para mostrar uma resposta.

Você ficou feliz que um site foi carregado. Você pode ter se queixado secretamente de que o carregamento estava lento. Mas você não pode fazer muito sobre isso. Isso porque o tempo de carregamento lento normalmente vinha de fatores que eram independentes do servidor da Web e da tecnologia que você estava usando. Principalmente foi a conexão de internet real que foi o principal fator limitante.

Avanço rápido para hoje. Os ótimos tempos de carregamento do website são medidos em milissegundos em vez de segundos. Os usuários começam a ficar com comichão quando um site leva mais de 3 segundos para mostrar uma resposta. Nesse tipo de situação, ineficiências contadas em milissegundos associados às versões originais do HTTP começam a fazer uma diferença real. É por isso que você tem tantos artigos discutindo como tornar seu site mais rápido . Porque milissegundos importam.

A nova versão do HTTP, conhecida como HTTP / 2 aborda problemas conhecidos específicos do HTTP. Seus objetivos são abordar uma série de problemas que se tornaram mais pronunciados à medida que a web evoluiu para sites cada vez maiores, com muito mais CSS, JS e arquivos de imagem do que o inicialmente previsto.

Mas o que há de errado com o HTTP1.x e por que gastamos tanto esforço para torná-lo mais rápido?

Os problemas do HTTP1.x

HTTP1.x tem vários problemas inerentes. Na verdade, vamos nos abster de chamá-los de problemas. O HTTP1.x possui diversas maneiras de ser mais eficiente.

  1. O HTTP 1.x é baseado em texto: originalmente, a ideia era que o HTTP1.x deveria ser humanamente legível, por isso era totalmente baseado em texto. Por definição, todos os protocolos baseados em texto têm ineficiências associadas a eles, como espaços em branco, quebras de links, letras maiúsculas, etc.
  2. Apenas um arquivo está em transferência a qualquer momento: este é um dos maiores problemas com as versões 1.x do HTTP. Imagine ser um entregador que só é capaz de entregar um pacote de cada vez. Eles precisam voltar à base toda vez que precisarem entregar o próximo pacote.
  3. Centenas de solicitações são necessárias para os sites de hoje: ter temas mais sofisticados significa que o tamanho dos sites e o número de recursos aumentam. E o mesmo acontece com o tempo gasto para carregar cada recurso. Lembre-se de que nosso "entregador" precisa voltar à base toda vez, eles não podem transferir mais de um arquivo de cada vez.
  4. Cada conexão é uma operação técnica pesada: uma vez que centenas de conexões são necessárias, ela começa a acumular sobrecarga séria. Com o tempo de carregamento sendo medido em milissegundos, o tempo combinado necessário para criar uma conexão para centenas de recursos começa a se tornar muito significativo.

Muitas vezes os web designers tiveram que implementar medidas específicas para reduzir essas ineficiências. Soluções alternativas, como CSS sprites, minification e a combinação de arquivos, destinam-se a superar problemas com o carregamento de sites.

Estas são - em essência - soluções alternativas em vez de correções.

Como o HTTP / 2 resolve os problemas do HTTP1.x

HTTP / 2 é projetado e evoluído de SPDY , um protocolo projetado em Google destinada a tornar a web 2x mais rápida. Aborda problemas HTTP da seguinte maneira

  1. O HTTP / 2 é destinado ao consumo por máquinas (seu navegador da Web e o servidor da Web do seu site) em vez de seres humanos. É binário, em vez de baseado em texto, tornando-o inerentemente mais eficiente. A transferência e análise dos dados é mais rápida usando protocolos binários.
  2. Vários arquivos podem ser transferidos simultaneamente na mesma conexão . Correções foram implementadas de tal forma que você pode canalizar recursos na mesma conexão. Em vez de ter que abrir uma nova conexão a cada vez (nosso entregador volta à base), todos os recursos podem ser transportados na mesma conexão (nosso entregador despeja tudo em uma van e leva tudo em uma única viagem).
  3. Servidor push para enviar arquivos que serão exigidos pelo navegador. No HTTP1.x, é o navegador que solicita ao servidor da Web os recursos necessários. O Push do HTTP Server (implementado como parte do HTTP / 2) permite que o servidor comece a enviar recursos que ele sabe que o navegador da Web precisará. Por exemplo, você pode instruir o servidor a não esperar que o navegador peça os arquivos CSS, JS e outros recursos de que o navegador precisará, de qualquer maneira.
  4. Pacote HTTP Cabeçalho e outras otimizações - estas são melhorias técnicas que são projetadas para melhorar a eficiência real das transferências

O que é necessário para ativar o HTTP2?

Por não suportar HTTP / 2 em conexões não criptografadas, os proprietários de sites estão sendo fortemente armados para implementar HTTPs em seu site.

De volta ao início do artigo, dissemos que não é necessário muito esforço do seu lado para ativar o HTTP / 2. Ativar o HTTP / 2 é algo que precisa ser feito no nível do servidor da web. A maioria dos servidores da Web, como Apache, Nginx, IIS e outros servidores da Web principais, já tem suporte para HTTP / 2.

Se você executar seu próprio servidor da Web, basta instalar e ativar as bibliotecas HTTP / 2. Se o seu site estiver hospedado em uma empresa de hospedagem, verifique com a empresa se o servidor da Web já está habilitado para HTTP / 2.

A pegada? Certificados Seguros

Talvez as coisas fossem boas demais para ser verdade. Acabamos de discutir como os servidores da Web já suportam totalmente o HTTP / 2.

A maioria dos navegadores principais também suporta totalmente o HTTP / 2. No entanto, eles também escolheram apenas suportar HTTP / 2 no modo criptografado. A razão para isso é que houve um forte movimento para habilitar HTTPS (criptografia) em toda a web. Iniciativas como HTTPS em todo lugar impulsionar fortemente a necessidade de HTTPS em todos os sites.

Por não suportar HTTP / 2 em conexões não criptografadas, os proprietários de sites estão sendo fortemente armados para implementar HTTPs em seu site.

Claro que isso não é necessariamente uma coisa ruim. A implementação do HTTPS tem vantagens significativas em segurança e privacidade. Com as empresas se unindo para formar uma Autoridade de Certificação chamada Vamos criptografar para permitir certificados seguros gratuitos, o custo total para realmente adquirir um certificado e implementar HTTPS torna-se muito mais barato. Isso foi relativamente caro até algum tempo atrás.

A implementação do HTTPS não é algo que você deva fazer sem dar o devido devido pensamento. Talvez você queira discutir isso com seu desenvolvedor de site confiável ou alguém com conhecimento técnico suficiente. Na maioria das vezes, sua empresa de hospedagem deve ser capaz de guiá-lo através disso.

Obviamente, é altamente recomendável implementar o HTTPS. Além da segurança adicional, você terá a capacidade de ativar o HTTP / 2 e tornar seu site mais rápido. Isso é o que chamamos de situação ganha-ganha.

Outras técnicas de otimização ainda são necessárias?

Sim e não.

Algumas otimizações destinadas a reduzir as solicitações da Web se tornam supérfluas. Se o seu site está incorrendo em tempo de computação para “combinar” JS, CSS e outros arquivos, isso se tornou um custo indireto. Qualquer momento "desperdiçado", abordando as ineficiências acima mencionadas, não é mais necessário.

Por outro lado, essas otimizações, como o cache, a redução do tamanho dos recursos, a entrega de conteúdo em um CDN, a escolha de um ótimo servidor de hospedagem e outras otimizações que abordam diferentes tipos de ineficiência devem permanecer no lugar.

A grande coisa sobre o HTTP / 2 é que ele não apenas faz com que o seu site seja carregado mais rápido, mas também o leva a tornar seu site mais seguro. Não há como argumentar que há vantagens para ambos. O HTTP / 2 é o próximo passo para tornar toda a web mais rápida. Vamos todos fazer parte disso e fazer acontecer.