HTTP/2 é a nova versão do protocolo que dominina a internet: o HTTP.
A versão marjoritária do HTTP é 1.1 que foi padronizada em 1997 com versões variações que aceitam SSL. Você provavelmente está lendo este artigo utilizando o protocolo HTTP/1.1.
O HTTP/2 se tornou um padrão estável em 2015, após a publicação de dois RFCs:
Logo, logo, se tornará a versão dominante na web.
Por que uma nova versão do HTTP?
A internet evoluiu para aplicações mais dinâmicas e mais ricas com multiplas requisições.
Na versão 1.1 do HTTP para cada JS, CSS, imagens presentes numa página, o browser faz uma requisição ao servidor. Contudo, mesmo com técnicas, como:
- multiplas requisições
- conexão persistente
- variações de DNS
a performance do HTTP/1.1 não é muito boa. Devido uma série problemas diretamente correlacionadas ao protocolo.
O que o HTTP/2 pretende resolver?
Em uma palavra: Latência
Ou o tempo entre uma requisição ser completada, ou ainda, mais forte:
Todas as requisições de uma página serem resolvidas em uma única conexão com o servidor.
Hoje alguns problemas de performance poderiam ser mitigados se o protocolo HTTP/1.1 tivesse algumas funcionalidades, tais como:
- Compressão dos headers do protocolo
- Reaproveitamento das requisições TCP
- Utilizar várias chamadas numa única requisição TCP
Todas estas técnicas são parte da razão do desenvolvimento da versão 2 do HTTP, um esforço para tornar a web mais rápida, dinâmica e confiável.
Diferenças do HTTP/1.1
O HTTP/2 será 100% compatível com a versão 1.1 do protocolo. Mas com uma diferença substancial:
Apenas requisições HTTPS serão possíveis
Ou seja, apeanas requisições criptografadas poderão tirar real proveito das vantagens do HTTP/2. Porém isto não é uma restrição presente no protocolo, mas uma decisão dos browsers (e.g. Firefox, chrome), ou seja da indústria, para forçar o uso de conexões criptografadas.
O que vem por aí?
Eu particurlamente, sei muito pouco sobre a nova versão do HTTP. Num esforço de retomar este blog, inicio uma série de estudos e postagens sobre o HTTP 2 associado ao desenvolvimento do zero de um servidor compatível com HTTP2 em sua totalidade usando python 3.5 - tentando tirar proveito da nova funcionalidade async/await.
Espero falar sobre:
- Python 3.5
- Processamento assincronos
- Criptografia
- HTTP 2
- Performance
- Compressão de dados