Server Push no HTTP/2


Quando fazemos a solicitação para alguma página de um site, além de seu próprio conteúdo, ela referencia alguns outros recursos (tais como arquivos de scripts, imagens, estilos (CSS), etc.), e para cada um destes itens, novas requisições partem do navegador do cliente para baixa-los e, finalmente, apresentar o resultado final do usuário que a solicitou.

Na maioria das vezes estes recursos extras estão debaixo do mesmo servidor, e como sabemos, os navegadores limitam o número máximo de conexões simultâneas para um determinado domínio, o que gera certa lentidão no acesso, pois dependendo do tamanho e tempo de download destes arquivos, o resultado levará ainda mais tempo para ser exibido.

Como alternativa, é comum utilizarmos uma técnica conhecida domain-sharding, que nos permite espalhar os recursos extras por diferentes domínios e permitir o download simultâneo de todos eles; a outra opção é utilizar scripts ou estilos inline, que evita round-trips extras, mas acaba dificultando a manutenção e reutilização de código, e ainda, perdemos a opção de realizar caching destes recursos do lado do cliente.

Entre os novos recursos que o HTTP/2 fornece, um deles é o server push, que nos permite otimizar os problemas descritos acima, fornecendo uma opção que viabiliza o uso de referências externas sem comprometer a performance. A versão HTTP/2 faz um melhor uso das conexões TCP, e devido a restruturação de como a mensagem é enviada e recebida, passa a ser possível utilizar uma mesma conexão para requisitar e receber o resultado da solicitação e também dos recursos por ela utilizados e que não solicitados explicitamente.

Quando o servidor entende que o recurso solicitado faz uso de outras referências, ele é capaz de empurrar ao cliente essas referências indicando que elas serão utilizadas no futuro; na sequência ele devolve o resultado (HTML) da página e quando o navegador percebe que há imagens, CSS ou scripts, antes dele fazer a requisição para cada um deles, ele percebe que os mesmos já foram entregues, evitando o round-trip para cada um destes recursos extras, diminuindo consideravelmente o tempo de exibição do conteúdo como um todo.

Apesar de que isso não afete em nada as aplicações que já estão rodando ou que serão desenvolvidas, é importante saber da existência e comportamento desta funcionalidade para tirar proveito destas novas funcionalidades de mais baixo nível. Com o Windows 10, Internet Information Services (IIS) e o Edge, é possível ver isso em funcionamento. É importante mencionar que, por enquanto, a Microsoft apenas implementou este recurso apenas quando o site está sendo acessado através de HTTPS. É possível visualizar o HTTP/2 sendo usado através do log do Edge. E claro, se o cliente não suportar o HTTP/2, ele utilizará o HTTP 1.1 como fallback.

Anúncios

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s