Gzip vs Brotli – Qual método de compactação você deve usar e por quê
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 se voltando cada vez mais para 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 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 suas máquinas para armazenar mais dados.Portanto, os programadores Jean-loup Gailly e Mark Adler criaram o Gzip como uma alternativa gratuita para usuários GNU.
O novo Gzip não era apenas uma imitação barata; na verdade, era 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 ficar com 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’.
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.
Lembre-se de que Gzip e Brotli devem ser usados apenas para compactar arquivos de texto. Arquivos binários como JPEGs e MP4s dependem de 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 é compatível com todos os principais navegadores.
No caso de um navegador que não suporta Brotli solicitar um ativo de um site que entrega arquivos compactados com Brotli, o servidor fará fallback para Gzip e entregará ativos codificados que o navegador suporta – desde que o servidor esteja configurado corretamente.
O que torna Brotli melhor?
De acordo com a pesquisa realizada pela CertSimple :
- Os pacotes JavaScript compactados com Brotli são 14% menores do 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 do que os compactados pelo Gzip.
Como a maioria dos sites depende de todos esses 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: aproveitando ao máximo Brotli
Apesar do que você pode ter ouvido, compactar ativos com Brotli não é mais lento que Gzip. Dito isso, o Gzip e o Brotli oferecem níveis variáveis de compactação, e as configurações padrão do Brotli podem resultar em uma 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, ativos estáticos podem ser compactados de forma mais densa de antemão sem sacrificar a velocidade, portanto, a configuração padrão de “11” é mais apropriada para esse tipo de conteúdo.
Instalando o Brotli em seu servidor Web
Adicionar suporte para Brotli fornece ganhos significativos com esforço mínimo. Dependendo de qual software de servidor 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:
- Nginx tem 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, há um módulo da comunidade que adiciona suporte.
- O Node.js é semelhante ao da Microsoft, pois não há suporte oficial, mas há um módulo de 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 só roda 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, insira o seguinte para reiniciar o NGINX e começar a colher os benefícios:
sudo systemctl restart nginx
Usando Brotli com ativos pré-compactados
O Brotli é ótimo para fornecer ativos pré-compactados muito mais rápido que o Gzip. Isso se deve ao fato de que você pode comprimi-los no nível mais alto de Brotli (11) e, em seguida, fazer com que o servidor de origem os pegue 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 instantânea é necessária, o que significa que o tempo gasto na compactação dos arquivos é salvo.
Saiba mais sobre como usar o Webpack para gerar ativos compactados Brotli.
Seu CDN suporta Brotli?
Para colher todos 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 nenhum 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 sendo armazenados em cache em servidores de ponta mais próximos de seus visitantes.
Este 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 instantânea, 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 da Web vale bem a economia substancial no tamanho do arquivo. Embora o Brotli às vezes funcione mais lentamente em suas configurações de compactação mais altas, você pode facilmente alcançar 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, isso não necessariamente tornará os aplicativos lentos mais rápidos. Como o Brotli comprime apenas recursos baseados em texto, você precisará otimizar suas imagens por outros meios. Se você ainda não mudou para HTTP/2, isso pode fazer uma grande diferença no desempenho do seu aplicativo. Cada milissegundo conta, então qualquer ação que você tomar para acelerar seu aplicativo aumenta suas chances de reter usuários.