A fer­ra­menta de com­pres­são de dados gzip pode ser utilizada em várias pla­ta­for­mas e é es­pe­ci­al­mente útil no âmbito do de­sen­vol­vi­mento web e em projetos online como solução de com­pres­são. O gzip é fa­cil­mente ativado e gerido a partir da fer­ra­menta de linha de comandos cor­res­pon­dente, o que permite poupar espaço de ar­ma­ze­na­mento e melhorar o de­sem­pe­nho do sistema.

Como funciona o gzip?

O gzip, abre­vi­a­tura de «GNU zip», baseia-se no algoritmo de deflação, de uso livre, que combina o método de com­pres­são de ficheiros LZ77 (Lempel-Ziv 77) com a co­di­fi­ca­ção de Huffman. Com a ajuda destas duas técnicas, o gzip analisa os ficheiros em busca de sequên­cias de ca­rac­te­res repetidas. Se o programa encontrar este tipo de sequên­cias re­pe­ti­ti­vas, substitui-as por uma re­fe­rên­cia à primeira cadeia. O com­pri­mento destas sequên­cias está nor­mal­mente limitado a 32 000 bytes. Por con­se­guinte, se uma cadeia de ca­rac­te­res não aparecer nos 32 000 bytes an­te­ri­o­res, será ar­ma­ze­nada sem com­pres­são no ficheiro gzip, cuja extensão é .gz.

Este método aplica-se apenas a ficheiros in­di­vi­du­ais, pelo que é ne­ces­sá­rio utilizar também o programa de com­pac­ta­ção tar para criar os chamados ficheiros Tarball com as extensões .tar.gz ou .tgz.

Por pre­de­fi­ni­ção, o ficheiro original de­sa­pa­rece nor­mal­mente após a com­pres­são com gzip (quando aplicado di­re­ta­mente sobre um ficheiro). No entanto, é possível desativar esta função au­to­ma­ti­ca­mente através do parâmetro opcional (-k). Para des­com­pri­mir pacotes com­pri­mi­dos, pode-se recorrer à aplicação gunzip ou ao comando gzip cor­res­pon­dente.

gzip: sintaxe e prin­ci­pais comandos

Embora existam in­ter­fa­ces gráficas para as di­fe­ren­tes pla­ta­for­mas, é per­fei­ta­mente possível e muito simples utilizar o gzip a partir do terminal ou da linha de comandos. Mesmo para quem está a dar os primeiros passos, não re­pre­senta um grande desafio, uma vez que o gzip foi otimizado como uma fer­ra­menta clássica de linha de comandos. A sua sintaxe geral é a seguinte:

gzip opción archivo(s)
bash

Não é obri­ga­tó­rio es­pe­ci­fi­car nenhuma opção. Se o campo ficar em branco, o gzip utiliza a con­fi­gu­ra­ção padrão. Por exemplo, este comando básico cria uma versão com­pri­mida do ficheiro de texto ejemplo.txt:

gzip ejemplo.txt
bash

No entanto, se pretender des­com­pac­tar ficheiros ou definir pa­râ­me­tros es­pe­cí­fi­cos, como o nível de com­pres­são, o diretório de destino ou o que fazer com o ficheiro original, terá de incluir as opções adequadas. Na tabela seguinte, en­con­trará um resumo dos comandos mais im­por­tan­tes do gzip:

Opção Descrição
-1-9 Define o nível de com­pres­são (1–9), em que 1 é o mais rápido, mas menos eficiente, e 9 é o mais eficiente, mas mais lento. O valor pre­de­fi­nido é 5
-r Pesquisa re­cur­si­va­mente no diretório (incluindo os sub­di­re­tó­rios) e compacta ou des­com­pacta todos os ficheiros contidos
-f Força a com­pres­são com gzip e so­bres­creve ficheiros exis­ten­tes com o mesmo nome, se ne­ces­sá­rio
-d Des­com­pacta o ficheiro se­le­ci­o­nado no diretório atual
-k Impede que o ficheiro original seja eliminado
-l Mostra in­for­ma­ções como a taxa de com­pres­são do ficheiro com­pri­mido
-c Exibe o ficheiro com­pri­mido na saída padrão (nor­mal­mente, o ecrã ligado ao terminal)
-q Desativa todas as mensagens do gzip
-t Verifica a in­te­gri­dade do ficheiro com­pri­mido
-h Mostrar todas as opções dis­po­ní­veis

Em que áreas pode ser utilizada a fer­ra­menta de com­pres­são gzip?

Atu­al­mente, o gzip é com­pa­tí­vel com pra­ti­ca­mente todas as pla­ta­for­mas e pode ser am­pla­mente utilizado, desde que se respeite a licença GPL escolhida para o projeto. Nos sistemas Linux, esta fer­ra­menta de com­pres­são vem nor­mal­mente pré-instalada ou está dis­po­ní­vel no gestor de pacotes. Além disso, no site oficial do gzip também é possível encontrar versões para macOS e Windows, pelo que pode utilizá-la nestes sistemas a qualquer momento para poupar espaço de ar­ma­ze­na­mento.

Outro campo de aplicação muito im­por­tante é o ambiente web: ser­vi­do­res como o Apache suportam a com­pres­são gzip há anos, e os na­ve­ga­do­res modernos conseguem in­ter­pre­tar os ficheiros com­pri­mi­dos e des­com­primí-los durante a ren­de­ri­za­ção da página web. Neste contexto, o gzip demonstra todo o seu potencial: se esta fun­ci­o­na­li­dade for ativada, o servidor web comprime au­to­ma­ti­ca­mente tanto os elementos car­re­ga­dos no espaço web como os elementos gerados di­na­mi­ca­mente. Desta forma, é possível reduzir sig­ni­fi­ca­ti­va­mente o tempo de car­re­ga­mento de uma página como parte de uma es­tra­té­gia básica de oti­mi­za­ção web. A des­com­pres­são é realizada em segundo plano no navegador, sem ne­ces­si­dade de consumir largura de banda adicional. Esta melhoria de de­sem­pe­nho beneficia es­pe­ci­al­mente os uti­li­za­do­res de dis­po­si­ti­vos móveis e, de forma indireta, também melhora o po­si­ci­o­na­mento nos motores de busca.

Como se pode utilizar a com­pres­são gzip no Apache?

Os ser­vi­do­res web costumam dis­po­ni­bi­li­zar o método de com­pres­são gzip sob a forma de um módulo que basta ativar. Atu­al­mente, muitos for­ne­ce­do­res de alo­ja­mento ativam esta função por pre­de­fi­ni­ção, embora a situação fosse um pouco diferente no passado. Se não tiver a certeza se o seu for­ne­ce­dor permite a uti­li­za­ção da com­pres­são gzip, pode contactá-lo di­re­ta­mente ou verificar ma­nu­al­mente.

Num servidor web Apache, é possível verificar a con­fi­gu­ra­ção do módulo, por exemplo, com a ajuda de uma função simples phpinfo(). A entrada HTTP_ACCEPT_ENCODING revela quais são os métodos de com­pres­são ou se algum foi se­le­ci­o­nado.

Se o gzip estiver dis­po­ní­vel, tem três opções di­fe­ren­tes para utilizar esta fer­ra­menta de com­pres­são, de acordo com as suas ne­ces­si­da­des.

Opção 1: ativar a com­pres­são gzip a partir do ficheiro .htaccess

Através de um ficheiro .htaccess, pode aplicar con­fi­gu­ra­ções es­pe­cí­fi­cas por diretório e, assim, ajustar o seu servidor web em tempo real. Isto é possível porque um ficheiro de con­fi­gu­ra­ção, que nor­mal­mente se encontra no diretório raiz e que chega ao servidor com cada pedido, pode ser lido au­to­ma­ti­ca­mente. No caso de alguns for­ne­ce­do­res de alo­ja­mento web, o ficheiro .htaccess é colocado ou ocultado noutra pasta ou tem o acesso bloqueado. Nesse caso, a única opção é contactar o for­ne­ce­dor e solicitar acesso. Se tiver permissão para efetuar al­te­ra­ções, pode ativar a com­pres­são com gzip através do módulo do algoritmo de deflação (mod_deflate), adi­ci­o­nando o seguinte código ao ficheiro .htaccess:

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
</IfModule>
txt
Dica

Também precisará da au­to­ri­za­ção do seu for­ne­ce­dor de alo­ja­mento para utilizar os módulos mod_gzip e mod_deflate.

Opção 2: ativar a com­pres­são gzip através do PHP

Também podes ativar a com­pres­são gzip uti­li­zando uma simples linha de código em PHP. A des­van­ta­gem deste método é que o código deve ser incluído em cada ficheiro PHP se­pa­ra­da­mente. Por isso, esta opção só é re­co­men­dada se não tiveres as per­mis­sões ne­ces­sá­rias para editar o ficheiro .htaccess. A linha de código que deves adicionar no início de cada ficheiro é a seguinte:

<?php
ob_start("ob_gzhandler");
?>
php

Opção 3: im­ple­men­tar o gzip através de um plugin

Para além das duas soluções manuais apre­sen­ta­das, existe outra al­ter­na­tiva que requer um esforço mínimo de con­fi­gu­ra­ção: ativar a com­pres­são com gzip através de um plugin para o sistema de gestão de conteúdos (CMS) que estiver a utilizar. Estas extensões úteis podem ser in­te­gra­das em poucos minutos e adaptadas fa­cil­mente às suas ne­ces­si­da­des. Estão dis­po­ní­veis prin­ci­pal­mente para CMS baseados em PHP, como o WordPress. A seguir, apre­sen­ta­mos três dos plugins mais populares para esta pla­ta­forma de blogs:

  • W3 Total Cache: o plugin W3 Total Cache para WordPress promete uma melhoria notável no de­sem­pe­nho do site. Além de vários me­ca­nis­mos de cache e de um suporte especial para dis­po­si­ti­vos móveis, este pacote de SEO e usa­bi­li­dade também inclui opções para ativar a com­pres­são gzip. WP Rocket: O WP Rocket é também um plugin clássico de cache para o WordPress. Esta extensão é fácil de usar e ativa desde o início todas as fun­ci­o­na­li­da­des es­sen­ci­ais para otimizar a ve­lo­ci­dade, incluindo a com­pres­são gzip.
  • WP Per­for­mance Score Booster: o plugin WP Per­for­mance Score Booster conta já com mais de 10 000 ins­ta­la­ções ativas. Com a ajuda do plugin, é possível ativar fa­cil­mente o gzip e comprimir de forma eficaz os conteúdos do seu projeto web, tais como textos, HTML, Ja­vaS­cript, CSS, XML, etc.

Como ativar o gzip no servidor web NGINX?

Se dis­po­ni­bi­li­zar o conteúdo do seu site através de um servidor web NGINX, isso permite-lhe utilizar a técnica de com­pres­são gzip para melhorar o tempo de car­re­ga­mento do seu projeto. Para tal, basta con­fi­gu­rar cor­re­ta­mente o módulo ngx_http_gzip_module. Nor­mal­mente, a diretiva gzip, através da qual pode ativar ou desativar o serviço de com­pres­são, está de­sa­ti­vada.

Para alterar esta con­fi­gu­ra­ção, abra o ficheiro nginx.conf e procure a diretiva gzip. Em seguida, altere a entrada gzip off para gzip on. A tabela seguinte apresenta in­for­ma­ções sobre o sig­ni­fi­cado e as pos­si­bi­li­da­des de algumas diretivas para con­fi­gu­rar a com­pres­são gzip no NGINX:

Diretiva Sintaxe Con­fi­gu­ra­ção padrão Descrição
gzip_buffers gzip_buffers cantidad tamaño; gzip_buffers 32 4k; 16 8k; Define a quan­ti­dade e o tamanho dos buffers para a com­pres­são
gzip_comp_level gzip_comp_level grado de compresión; gzip_comp_level 1; Es­pe­ci­fica o nível de com­pres­são; valores entre 1 e 9
gzip_min_length gzip_min_length longitud mínima; gzip_min_length 20; Indica o tamanho mínimo em bytes de um ficheiro com­pri­mido
gzip_http_version gzip_http_version número de versión; gzip_http_version 1.1; Define a partir de que versão do HTTP uma so­li­ci­ta­ção recebe uma resposta com­pac­tada
gzip_types gzip_types tipo de contenido; gzip_types text/html; Define para que tipos de conteúdos a com­pres­são é válida (é possível para: CSS, JSON, XML, etc.)

Como se pode verificar a com­pres­são gzip?

Depois de con­fi­gu­rar a com­pres­são gzip para o seu site, pode utilizar várias fer­ra­men­tas online para se cer­ti­fi­car de que o processo funciona como esperado e de que o servidor web fornece conteúdos com­pri­mi­dos para os pedidos cor­res­pon­den­tes. Neste sentido, recomenda-se, acima de tudo, a aplicação Google PageSpeed Insights. Após in­tro­du­zir o URL do site em questão, a fer­ra­menta analisa au­to­ma­ti­ca­mente o seu conteúdo e fornece in­for­ma­ções sobre os aspetos mais re­le­van­tes do seu de­sem­pe­nho. Entre outros dados, receberá in­for­ma­ções sobre se a com­pres­são gzip está ativada.

Em al­ter­na­tiva, também é possível realizar um teste simples sobre o gzip com a fer­ra­menta HTTP Com­pres­sion Test dis­po­ní­vel em WhatsMyIP.org.

Ir para o menu principal