Gzip vs Brotli – Qual método de compactação você deve usar e por quê

Publicados: 2018-03-02

O Gzip se tornou o padrão-ouro para compactação de arquivos no início dos anos 90, mas se você ainda o estiver usando em 2018, considere mudar para um método de compactação mais recente.

Embora o Gzip ainda tenha seu lugar no coração de muitos, os desenvolvedores da web estão cada vez mais recorrendo a opções superiores, como o algoritmo de compactação Brotli do Google.

Uma breve história da compactação de arquivos

O “G” em Gzip é a abreviação de GNU. GNU é um sistema operacional de código aberto baseado em Unix que foi desenvolvido na década de 1980. Naquela época, a Unisys e a IBM já haviam patenteado seus próprios algoritmos para compactar e descompactar arquivos, o que permitia que suas máquinas armazenassem mais dados. Portanto, os programadores Jean-loup Gailly e Mark Adler criaram o Gzip como uma alternativa gratuita para usuários do GNU.

O novo Gzip não era apenas uma imitação barata; era realmente mais rápido do que seus concorrentes protegidos por direitos autorais. Como resultado, as pessoas ainda o usam para compactação de arquivos até hoje. Embora seja fácil manter o que você se sente confortável, existem vários algoritmos de compactação que atualmente fornecem melhores resultados de compactação do que o Gzip. É aí que entra Brotli.

O que é Brotli?

Brotli é uma especificação de formato de dados mais recente que aproveita vários algoritmos para condensar dados com mais eficiência do que o Gzip. Em 2015, a especificação Brotli foi generalizada para compressão de fluxo HTTP com o tipo de codificação de conteúdo 'br'.

Brotli Content Encoding

Desenvolvido por Jyrki Alakuijala e Zoltan Szabadka, o Brotli usa os mesmos algoritmos de compactação do Gzip, mas também é suportado por um dicionário de palavras e frases usadas com frequência para oferecer uma melhor taxa de compactação.

Tenha em mente que Gzip e Brotli devem ser usados ​​apenas para compactar arquivos de texto. Arquivos binários como JPEGs e MP4s contam com seus próprios algoritmos de compactação específicos de formato. Se você tentar compactar um JPEG com Brotli, o arquivo resultante será maior que o original.

Embora nem sempre tenha sido assim, o Brotli agora é suportado por todos os principais navegadores.

Brotli Support

No caso de um navegador que não suporta Brotli solicitar um ativo de um site que entrega arquivos compactados com Brotli, o servidor retornará ao Gzip e entregará ativos codificados que o navegador suporta – desde que o servidor esteja configurado corretamente.

O que torna o Brotli melhor?

De acordo com a pesquisa realizada pela CertSimple:

  • Os pacotes JavaScript compactados com Brotli são 14% menores que os pacotes JavaScript compactados com Gzip.
  • Os arquivos HTML compactados pelo Broti são 21% menores que seus equivalentes Gzip.
  • Os arquivos CSS compactados pelo Brotli são 17% menores que os compactados pelo Gzip.

Como a maioria dos sites depende desses três tipos de ativos, há uma diferença considerável nos tamanhos dos ativos em comparação com o Gzip. Essas economias, por sua vez, farão uma melhoria notável no desempenho do seu aplicativo.

Gzip vs Brotli: tirando o máximo proveito do Brotli

Apesar do que você já deve ter ouvido, a compactação de ativos com o Brotli não é mais lenta que o Gzip. Dito isso, Gzip e Brotli oferecem níveis variáveis ​​de compactação, e as configurações padrão do Brotli podem resultar em compactação mais lenta do que as configurações padrão do Gzip. Você terá que fazer alguns ajustes no Brotli para encontrar um equilíbrio aceitável entre o tamanho do arquivo e a velocidade de compactação.

A configuração de compactação ideal depende do que e quando você está compactando. Um bom ponto de partida é o Brotli 4 para compactação mais rápida de conteúdo dinâmico. Por outro lado, os ativos estáticos podem ser compactados mais densamente antes sem sacrificar a velocidade, portanto, a configuração padrão de “11” é mais apropriada para esse conteúdo.

Instalando o Brotli em seu servidor web

Adicionar suporte para Brotli fornece ganhos significativos com o mínimo de esforço. Dependendo de qual software de servidor da Web você está usando, determinará qual método de integração você precisará usar para integrar o Brotli. O seguinte descreve algumas opções disponíveis:

  • O Nginx possui uma extensão Brotli oferecida pelo Google.
  • O Apache oferece uma extensão Brotli dedicada.
  • O Microsoft IIS não oferece suporte oficial ao Brotli, no entanto, existe um módulo da comunidade que adiciona suporte.
  • O Node.js é semelhante ao da Microsoft, pois não há suporte oficial, mas existe um módulo da comunidade.

Para demonstrar um exemplo de instalação rápida, digamos que você esteja executando o Nginx. Nesse caso, você pode instalar o módulo ngx_brotli com o seguinte:

cd nginx-1.x.x
$ ./configure --add-module=/path/to/ngx_brotli
$ make && make install

Em seguida, adicione o seguinte ao bloco HTTPS (o Brotli é executado apenas em HTTPS):

brotli on;
brotli_static on;
brotli_comp_level 4;
brotli_types text/plain text/css application/javascript application/json image/svg+xml application/xml+rss;

Você pode modificar as diretivas acima como achar melhor.

Por fim, digite o seguinte para reiniciar o NGINX e começar a colher os benefícios:

sudo systemctl restart nginx
Usando Brotli com ativos pré-comprimidos

O Brotli é ótimo para fornecer ativos pré-compactados muito mais rápido que o Gzip. Isso se deve ao fato de que você pode compactá-los no nível mais alto do Brotli (11) e depois fazer com que o servidor de origem os colete sempre que solicitado.

Esse tipo de configuração funciona muito bem com o Webpack, pois um plug-in do Webpack está disponível para compactar automaticamente seus ativos estáticos como Gzip e Brotli. Portanto, nenhuma compactação em tempo real é necessária, o que significa que o tempo gasto para compactar os arquivos é salvo.

Saiba mais sobre como usar o Webpack para gerar ativos compactados por Brotli.

Sua CDN suporta Brotli?

Para colher plenamente os benefícios do Brotli, você precisa de uma rede de entrega de conteúdo que o suporte. A KeyCDN, por exemplo, introduziu o suporte Brotli no ano passado para todos os clientes sem custo adicional. Portanto, seu site não apenas se beneficiará de tamanhos de arquivo reduzidos graças à melhor compactação Brotli, mas também se beneficiará de latência reduzida graças aos ativos armazenados em cache em servidores de borda mais próximos de seus visitantes.

Esse método requer que seu servidor de origem suporte Brotli e que a compactação real ocorra no lado do servidor de origem. Novamente, isso ajuda a economizar tempo e evita a necessidade de compactação em tempo real, que pode prejudicar o desempenho.

Gzip vs Brotli: em resumo

A pequena quantidade de esforço necessária para adicionar o Brotli ao seu servidor web vale bem a economia substancial no tamanho do arquivo. Embora o Brotli às vezes fique mais lento em suas configurações de compactação mais altas, você pode facilmente obter um equilíbrio ideal entre a velocidade de compactação e o tamanho do arquivo ajustando as configurações.

Embora o uso do Brotli possa transformar aplicativos da Web rápidos em aplicativos mais rápidos, não necessariamente tornará os aplicativos lentos mais rápidos. Como o Brotli comprime apenas ativos baseados em texto, você precisará otimizar suas imagens por outros meios. Se você ainda não migrou para o HTTP/2, isso pode fazer uma grande diferença no desempenho do seu aplicativo. Cada milissegundo conta, portanto, qualquer ação que você tomar para acelerar seu aplicativo aumenta suas chances de reter usuários.