Compressão Gzip e Brotli
Definição
Gzip e Brotli são algoritmos de compressão utilizados para reduzir o tamanho dos arquivos transferidos pela web, como HTML, CSS, JavaScript, JSON e SVG.
A compressão ocorre no servidor, e os dados são descomprimidos automaticamente pelo navegador, sem qualquer intervenção do usuário.
O resultado é uma transferência mais rápida e economia de banda, especialmente importante em dispositivos móveis e conexões lentas.
Objetivos da compressão com Gzip e Brotli
- Reduzir o volume de dados trafegados entre cliente e servidor.
- Diminuir o tempo de carregamento das páginas web.
- Aumentar a performance e a experiência do usuário.
- Melhorar a eficiência do servidor e das redes de distribuição (CDNs).
Exemplo prático — Como a compressão aparece no HTTP
Quando o navegador faz uma requisição, ele informa os algoritmos que aceita:
GET /index.html HTTP/1.1
Host: programicio.com
Accept-Encoding: gzip, br
O servidor responde com a versão comprimida, junto com o cabeçalho Content-Encoding
:
HTTP/1.1 200 OK
Content-Encoding: br
Content-Type: text/html
Nesse caso, o conteúdo foi comprimido com Brotli (br
), pois é mais eficiente que Gzip e suportado por todos os navegadores modernos.
Comparação entre Gzip e Brotli
Característica | Gzip | Brotli |
---|---|---|
Eficiência de compressão | Boa | Excelente |
Tamanho final | Reduzido | Ainda menor |
Velocidade de compressão | Mais rápida | Mais lenta |
Ideal para | Conteúdo dinâmico | Conteúdo estático |
Suporte em navegadores | Amplo | Amplo (moderno) |
ℹ️ Brotli é mais eficiente em termos de compressão, mas também mais lento para comprimir. Por isso, é ideal para conteúdo estático pré-comprimido durante o build.
O ciclo de compressão Gzip/Brotli
[Navegador envia uma requisição com Accept-Encoding: gzip, br]
↓
[Servidor identifica e aplica o algoritmo de compressão disponível]
↓
[Resposta inclui o cabeçalho Content-Encoding: gzip ou br]
↓
[Navegador descomprime automaticamente e exibe o conteúdo]
A compressão é mais efetiva em arquivos de texto, como HTML, CSS, JS e JSON. Arquivos binários como imagens, vídeos e PDFs já costumam estar comprimidos e não se beneficiam de Gzip ou Brotli.