Introdução
O assunto compactação normalmente é tratado na hora do deploy da aplicação, seja observando os relatórios de performance, como por exemplo o LigthHouse em caso de PWA ou seja simplesmente acessando o aplicativo e percebendo que ele está muito, as vezes muitooooo lento.
Fato é que esse assunto é o que envolve o maior número de engenheiros em empresas de desenvolvimento maiores e os navegadores já estão aptos à ajudar a resolver o problema e se não tiver, usa o GZIP mesmo.
A solução proposta aqui é o Brotli, um projeto Google que faz a compactação para você ter menos dores de cabeça com performance 🙂
Para usa-lo, utilize o gerenciador de pacotes do seu sistema operacional, eu estou usando um Ubuntu 16.04 LTS.
sudo apt-get install brotli
No caso de uma aplicação Angular, crie um arquivo no chamado Makefile no mesmo nível de onde está o seu package.json, copie o código abaixo e altere o que for necessário para adequar ao seu projeto.
build: ng build --prod --aot` compress: find dist -type f -exec sh -c "gzip < {} > {}.gz" \; find dist -type f -not -name "*.gz" -exec sh -c "bro --input {} --output {}.br" \;
Agora, executando os comandos make build no terminal, gera os arquivos de produção do Angular e o comando make compress gera os arquivos em GZIP e em BR (Brotli) compactados.
Não se preocupe que o seu servidor (Ngnx, Apache, etc) saberá o que fazer com eles 😀
Esse assunto sempre dá ibope, conte as suas experiências na seção de comentários…
Grande abraço!