O que é o gzip e como se utiliza esta ferramenta?
A ferramenta de compressão de dados gzip pode ser utilizada em várias plataformas e é especialmente útil no âmbito do desenvolvimento web e em projetos online como solução de compressão. O gzip é facilmente ativado e gerido a partir da ferramenta de linha de comandos correspondente, o que permite poupar espaço de armazenamento e melhorar o desempenho do sistema.
Como funciona o gzip?
O gzip, abreviatura de «GNU zip», baseia-se no algoritmo de deflação, de uso livre, que combina o método de compressão de ficheiros LZ77 (Lempel-Ziv 77) com a codificação de Huffman. Com a ajuda destas duas técnicas, o gzip analisa os ficheiros em busca de sequências de caracteres repetidas. Se o programa encontrar este tipo de sequências repetitivas, substitui-as por uma referência à primeira cadeia. O comprimento destas sequências está normalmente limitado a 32 000 bytes. Por conseguinte, se uma cadeia de caracteres não aparecer nos 32 000 bytes anteriores, será armazenada sem compressão no ficheiro gzip, cuja extensão é .gz.
Este método aplica-se apenas a ficheiros individuais, pelo que é necessário utilizar também o programa de compactação tar para criar os chamados ficheiros Tarball com as extensões .tar.gz ou .tgz.
Por predefinição, o ficheiro original desaparece normalmente após a compressão com gzip (quando aplicado diretamente sobre um ficheiro). No entanto, é possível desativar esta função automaticamente através do parâmetro opcional (-k). Para descomprimir pacotes comprimidos, pode-se recorrer à aplicação gunzip ou ao comando gzip correspondente.
gzip: sintaxe e principais comandos
Embora existam interfaces gráficas para as diferentes plataformas, é perfeitamente 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 representa um grande desafio, uma vez que o gzip foi otimizado como uma ferramenta clássica de linha de comandos. A sua sintaxe geral é a seguinte:
gzip opción archivo(s)bashNão é obrigatório especificar nenhuma opção. Se o campo ficar em branco, o gzip utiliza a configuração padrão. Por exemplo, este comando básico cria uma versão comprimida do ficheiro de texto ejemplo.txt:
gzip ejemplo.txtbashNo entanto, se pretender descompactar ficheiros ou definir parâmetros específicos, como o nível de compressão, o diretório de destino ou o que fazer com o ficheiro original, terá de incluir as opções adequadas. Na tabela seguinte, encontrará um resumo dos comandos mais importantes do gzip:
| Opção | Descrição |
|---|---|
-1 … -9
|
Define o nível de compressão (1–9), em que 1 é o mais rápido, mas menos eficiente, e 9 é o mais eficiente, mas mais lento. O valor predefinido é 5
|
-r
|
Pesquisa recursivamente no diretório (incluindo os subdiretórios) e compacta ou descompacta todos os ficheiros contidos |
-f
|
Força a compressão com gzip e sobrescreve ficheiros existentes com o mesmo nome, se necessário |
-d
|
Descompacta o ficheiro selecionado no diretório atual |
-k
|
Impede que o ficheiro original seja eliminado |
-l
|
Mostra informações como a taxa de compressão do ficheiro comprimido |
-c
|
Exibe o ficheiro comprimido na saída padrão (normalmente, o ecrã ligado ao terminal) |
-q
|
Desativa todas as mensagens do gzip |
-t
|
Verifica a integridade do ficheiro comprimido |
-h
|
Mostrar todas as opções disponíveis |
Em que áreas pode ser utilizada a ferramenta de compressão gzip?
Atualmente, o gzip é compatível com praticamente todas as plataformas e pode ser amplamente utilizado, desde que se respeite a licença GPL escolhida para o projeto. Nos sistemas Linux, esta ferramenta de compressão vem normalmente pré-instalada ou está disponí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 armazenamento.
Outro campo de aplicação muito importante é o ambiente web: servidores como o Apache suportam a compressão gzip há anos, e os navegadores modernos conseguem interpretar os ficheiros comprimidos e descomprimí-los durante a renderização da página web. Neste contexto, o gzip demonstra todo o seu potencial: se esta funcionalidade for ativada, o servidor web comprime automaticamente tanto os elementos carregados no espaço web como os elementos gerados dinamicamente. Desta forma, é possível reduzir significativamente o tempo de carregamento de uma página como parte de uma estratégia básica de otimização web. A descompressão é realizada em segundo plano no navegador, sem necessidade de consumir largura de banda adicional. Esta melhoria de desempenho beneficia especialmente os utilizadores de dispositivos móveis e, de forma indireta, também melhora o posicionamento nos motores de busca.
Como se pode utilizar a compressão gzip no Apache?
Os servidores web costumam disponibilizar o método de compressão gzip sob a forma de um módulo que basta ativar. Atualmente, muitos fornecedores de alojamento ativam esta função por predefinição, embora a situação fosse um pouco diferente no passado. Se não tiver a certeza se o seu fornecedor permite a utilização da compressão gzip, pode contactá-lo diretamente ou verificar manualmente.
Num servidor web Apache, é possível verificar a configuraçã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 compressão ou se algum foi selecionado.
Se o gzip estiver disponível, tem três opções diferentes para utilizar esta ferramenta de compressão, de acordo com as suas necessidades.
Opção 1: ativar a compressão gzip a partir do ficheiro .htaccess
Através de um ficheiro .htaccess, pode aplicar configurações específicas por diretório e, assim, ajustar o seu servidor web em tempo real. Isto é possível porque um ficheiro de configuração, que normalmente se encontra no diretório raiz e que chega ao servidor com cada pedido, pode ser lido automaticamente. No caso de alguns fornecedores de alojamento web, o ficheiro .htaccess é colocado ou ocultado noutra pasta ou tem o acesso bloqueado. Nesse caso, a única opção é contactar o fornecedor e solicitar acesso. Se tiver permissão para efetuar alterações, pode ativar a compressão com gzip através do módulo do algoritmo de deflação (mod_deflate), adicionando 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>txtTambém precisará da autorização do seu fornecedor de alojamento para utilizar os módulos mod_gzip e mod_deflate.
Opção 2: ativar a compressão gzip através do PHP
Também podes ativar a compressão gzip utilizando uma simples linha de código em PHP. A desvantagem deste método é que o código deve ser incluído em cada ficheiro PHP separadamente. Por isso, esta opção só é recomendada se não tiveres as permissões necessá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");
?>phpOpção 3: implementar o gzip através de um plugin
Para além das duas soluções manuais apresentadas, existe outra alternativa que requer um esforço mínimo de configuração: ativar a compressã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 integradas em poucos minutos e adaptadas facilmente às suas necessidades. Estão disponíveis principalmente para CMS baseados em PHP, como o WordPress. A seguir, apresentamos três dos plugins mais populares para esta plataforma de blogs:
- W3 Total Cache: o plugin W3 Total Cache para WordPress promete uma melhoria notável no desempenho do site. Além de vários mecanismos de cache e de um suporte especial para dispositivos móveis, este pacote de SEO e usabilidade também inclui opções para ativar a compressã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 funcionalidades essenciais para otimizar a velocidade, incluindo a compressão gzip.
- WP Performance Score Booster: o plugin WP Performance Score Booster conta já com mais de 10 000 instalações ativas. Com a ajuda do plugin, é possível ativar facilmente o gzip e comprimir de forma eficaz os conteúdos do seu projeto web, tais como textos, HTML, JavaScript, CSS, XML, etc.
Como ativar o gzip no servidor web NGINX?
Se disponibilizar o conteúdo do seu site através de um servidor web NGINX, isso permite-lhe utilizar a técnica de compressão gzip para melhorar o tempo de carregamento do seu projeto. Para tal, basta configurar corretamente o módulo ngx_http_gzip_module. Normalmente, a diretiva gzip, através da qual pode ativar ou desativar o serviço de compressão, está desativada.
Para alterar esta configuraçã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 informações sobre o significado e as possibilidades de algumas diretivas para configurar a compressão gzip no NGINX:
| Diretiva | Sintaxe | Configuração padrão | Descrição |
|---|---|---|---|
gzip_buffers
|
gzip_buffers cantidad tamaño;
|
gzip_buffers 32 4k; 16 8k;
|
Define a quantidade e o tamanho dos buffers para a compressão |
gzip_comp_level
|
gzip_comp_level grado de compresión;
|
gzip_comp_level 1;
|
Especifica o nível de compressã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 comprimido |
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 solicitação recebe uma resposta compactada |
gzip_types
|
gzip_types tipo de contenido;
|
gzip_types text/html;
|
Define para que tipos de conteúdos a compressão é válida (é possível para: CSS, JSON, XML, etc.) |
Como se pode verificar a compressão gzip?
Depois de configurar a compressão gzip para o seu site, pode utilizar várias ferramentas online para se certificar de que o processo funciona como esperado e de que o servidor web fornece conteúdos comprimidos para os pedidos correspondentes. Neste sentido, recomenda-se, acima de tudo, a aplicação Google PageSpeed Insights. Após introduzir o URL do site em questão, a ferramenta analisa automaticamente o seu conteúdo e fornece informações sobre os aspetos mais relevantes do seu desempenho. Entre outros dados, receberá informações sobre se a compressão gzip está ativada.
Em alternativa, também é possível realizar um teste simples sobre o gzip com a ferramenta HTTP Compression Test disponível em WhatsMyIP.org.