Como funciona a compressão GZIP / Deflate

A compressão de um site é um processo transparente para o usuário, mas é bom que conheçamos um pouco sobre como se realizam internamente as comunicações HTTP.

Por | @jonathanlamimkt Programação

A compressão de um site é um processo transparente para o usuário, mas é bom que conheçamos um pouco sobre como se realizam internamente as comunicações HTTP.

No artigo anterior mostramos alguns detalhes interessantes sobre a compressão GZIP, sobre como funciona e quais são as vantagens dessse modo de otimização das páginas web. Agora vamos ver como funciona na prática esse sistema.

Para poder entender a compressão por GZIP, ou outros métodos de compressão como o Deflate, temos que conhecer um pouco sobre as comunicações HTTP, que é o protocolo utilizado para o acesso a páginas web. Como sabemos, toda comunicação entre cliente e servidor responde a um mesmo esquema, que é justamente esse protocolo, um modo de operar definido para as comunicações entre clientes e servidores web.

De uma maneira muito esquemática, esses são os passos que realizam em uma comunicação HTTP entre o servidor web e o navegador:


  1. O cliente web (navegador) solicita uma página
  2. O servidor recebe a comunicação, comprova se existe o arquivo solicitado
  3. O servidor envia o arquivo
  4. O cliente (navegador) o exibe

Para implementar esse protocolo, na prática, os sistemas cliente e servidor trocam informações de controle entre si, nos cabeçalhos HTTP da solicitação e a nas respostas. Nos cabeçalhos HTTP, tanto na solicitação com na resposta, são alocadas muitas informações para controle e especificação da comunicação, na realidade só o que nos interessa agora são os dados enviados para definir se há compressão ou não.

Quando o cliente web solicita uma página, no passo 1, envia nos cabeçalhos HTTP um código de controle para dizer se aceita ou não o envio dos arquivos comprimidos e que formatos são permitidos.

O cliente que solicitou a página enviará uma variável chamada "accept-encoding" que terá como valor os formatos de compressão que o navegador suporta. Atualmente todos os navegadores modernos aceitam compressão GZIP e Deflate, e nos cabeçalhos HTTP da solicitação teremos o seguinte código de controle:
Accept-Encoding: gzip,deflate

Isso quer dizer que o navegador aceita os formatos de compressão GZIP e Deflate. O servidor que recebe esse cabeçalho, poderá então enviar os arquivos solicitados ao cliente em algum dos formatos especificados no cabeçalho HTTP, com a certeza de que o cliente poderá acessá-los perfeitamente. Dependendo de como for configurado o servidor, os arquivo poderão ser enviados comprimidos ou não.

O servidor web também envia nos cabeçalhos dos arquivos de resposta das comunicações HTTP uma variável para informar se os arquivos foram comprimidos ou não. No caso dos arquivos terem sido comprimidos, ele informa o formato da compressão.
Content-Encoding: gzip

Nessa variável, o servidor web está indicando que a resposta enviada está no formato de compressão GZIP.

Existem diversas maneiras de configurar um site para que as paginas sejam enviadas comprimidas, assim como outros arquivos externos também. Nos próximos artigos veremos diversas práticas nesse sentido, começando com explicações sobre como configurar o servidor para que seja feita a compressão de páginas PHP.

Mais sobre: desenvolvimento, programação, otimização
Share Tweet
DESTAQUESRecomendadoMais compartilhados
Comentários
AINDA NÃO SE INSCREVEU?

Vem ver os vídeos legais que
estamos produzindo no Youtube.