fbpx
Curiosidades Tecnologia

SPDY, HTTP2 e por que você deveria conhecê-los

Todos os dias, uma quantidade absurda de páginas, arquivos e e-mails trafegam pela Internet. Essas informações podem ser transmitidas de forma segura graças à padronização da forma de transmissão dessas informações, ou seja, meu computador sabe exatamente como conversar com o servidor do blog da ValueHost para pegar um post ou como conversar com meu servidor de e-mail para enviar uma mensagem para um amigo. A essas padronizações chamamos de protocolos, e um dos mais usados na Internet é o HTTP (HyperText Transfer Protocol ou Protocolo de Transferência de Hipertexto).

O protocolo HTTP é o protocolo usado pelo seu navegador para acessar os sites do seu dia-a-dia. Ele tem uma variante que adiciona criptografia à comunicação com o servidor, o HTTPS. Você pode conferir isso olhando o endereço que você está acessando: ele deve começar com http (ou https, se você estiver num site seguro). Esse protocolo começou a surgir junto com a popularização da Internet, no início da década de 1990. Desde então, passou por algumas modificações até chegar na versão atual: 1.1.

O problema é que a versão atual do HTTP não é tão atual assim: ela é de 1999. Desde então, a forma como utilizamos a Internet mudou bastante: sites mais elaborados, dispositivos móveis, banda larga… Por outro lado, o protocolo continua o mesmo. Com essas mudanças na forma de uso, o protocolo HTTP começou a se tornar um gargalo no desempenho dos sites.

A Google, uma empresa sempre muito preocupada com o desempenho de seus serviços, decidiu atacar os problemas do HTTP desenvolvendo seu próprio protocolo, o SPDY. Esse protocolo, na verdade, pode ser visto como uma camada a mais no protocolo HTTP, pois as ideias originais do protocolo HTTP (cabeçalhos, métodos etc.) continuam valendo da mesma forma que antes. O que muda é que, agora, esses cabeçalhos e todos os dados são transmitidos obrigatoriamente compactados e criptografados. Além disso, uma mesma conexão pode ser aproveitada para a transmissão de diversas requisições ao mesmo tempo, um recurso conhecido como multiplexação. Usando esses recursos, o tempo de carregamento de sua página pode cair mais de 40%, dependendo da situação, sendo que os maiores ganhos são registrados em conexões piores, onde qualquer ganho é bastante perceptível para o usuário. Vale notar, então, que, por ser apenas uma camada a mais sob o HTTP, sua aplicação não precisa mudar para que você comece a trabalhar com SPDY.

O protocolo SPDY vem evoluindo e ganhando suporte por parte dos servidores e navegadores. A versão mais recente do protocolo, 3.1, é suportada apenas pelos navegadores Chrome e Opera, mas o Firefox a suportará a partir da próxima versão (27). No entanto, a versão anterior (versão 3) é suportada pelo Internet Explorer 11 e pelo Firefox desde a versão 15. O protocolo também é suportado pelas versões móveis desses navegadores e pelo navegador padrão do Android desde a versão 3.0 do sistema. Nos navegadores em que não há suporte, a conexão é feita via HTTPS, ou seja, o usuário continua tendo acesso normal ao site. Do lado dos servidores, existe um módulo para o Apache httpd que ativa suporte ao protocolo: o mod_spdy; o servidor nginx também tem suporte à versão 3.1 do protocolo desde sua versão 1.5.10, sem necessidade de plugins. Além disso, existe uma implementação de um servidor em Ruby, uma implementação para o Node.js e, no mundo Java, o servidor Jetty já suporta o protocolo nas versões mais recentes e o Tomcat já conta com um suporte experimental em sua versão 8.

Vale notar ainda que alguns serviços muito utilizados por todos, como o Google, o Facebook e o Twitter, já usam o protocolo SPDY. Além disso, se sua aplicação está hospedada no Google App Engine e tem um certificado SSL, ela já está usando SPDY!

O protocolo SPDY vem demonstrando ótimos resultados e, por isso, está servindo como base para uma grande atualização do próprio protocolo HTTP. A especificação do protocolo HTTP/2.0 já está no seu nono rascunho (que conta com diversas implementações) e a versão final é prevista ainda para esse ano. Com a padronização dessas alterações no protocolo HTTP, a tendência é que vejamos sites carregando cada vez mais rápido nos próximos anos, independente da banda disponível crescer.