# 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:

```bash
gzip opción archivo(s)
```

Nã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`:

```bash
gzip ejemplo.txt
```

No 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:

<table>
  <thead>
    <tr>
      <th>Opção</th>
      <th>Descrição</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`-1` … `-9`</td>
      <td>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`</td>
    </tr>
    <tr>
      <td>`-r`</td>
      <td>Pesquisa recursivamente no diretório (incluindo os subdiretórios) e compacta ou descompacta todos os ficheiros contidos</td>
    </tr>
    <tr>
      <td>`-f`</td>
      <td>Força a compressão com gzip e sobrescreve ficheiros existentes com o mesmo nome, se necessário</td>
    </tr>
    <tr>
      <td>`-d`</td>
      <td>Descompacta o ficheiro selecionado no diretório atual</td>
    </tr>
    <tr>
      <td>`-k`</td>
      <td>Impede que o ficheiro original seja eliminado</td>
    </tr>
    <tr>
      <td>`-l`</td>
      <td>Mostra informações como a taxa de compressão do ficheiro comprimido</td>
    </tr>
    <tr>
      <td>`-c`</td>
      <td>Exibe o ficheiro comprimido na saída padrão (normalmente, o ecrã ligado ao terminal)</td>
    </tr>
    <tr>
      <td>`-q`</td>
      <td>Desativa todas as mensagens do gzip</td>
    </tr>
    <tr>
      <td>`-t`</td>
      <td>Verifica a integridade do ficheiro comprimido</td>
    </tr>
    <tr>
      <td>`-h`</td>
      <td>Mostrar todas as opções disponíveis</td>
    </tr>
  </tbody>
</table>

## 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](https://www.gzip.org/ "gzip.org – Página oficial del programa de compresión") 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:

```txt
<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>
```

Dica També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
<?php
ob_start("ob_gzhandler");
?>
```

### Opçã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](https://wordpress.org/plugins/w3-total-cache/ "Optimización del rendimiento web para proyectos WordPress: 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](https://wp-rocket.me/ "Página web de 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](https://wordpress.org/plugins/wp-performance-score-booster/ "WordPress.org: WP Performance Score Booster Download")**: 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:

<table>
  <thead>
    <tr>
      <th>Diretiva</th>
      <th>Sintaxe</th>
      <th>Configuração padrão</th>
      <th>Descrição</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`gzip_buffers`</td>
      <td>`gzip_buffers cantidad tamaño;`</td>
      <td>`gzip_buffers 32 4k; 16 8k;`</td>
      <td>Define a quantidade e o tamanho dos buffers para a compressão</td>
    </tr>
    <tr>
      <td>`gzip_comp_level`</td>
      <td>`gzip_comp_level grado de compresión;`</td>
      <td>`gzip_comp_level 1;`</td>
      <td>Especifica o nível de compressão; valores entre 1 e 9</td>
    </tr>
    <tr>
      <td>`gzip_min_length`</td>
      <td>`gzip_min_length longitud mínima;`</td>
      <td>`gzip_min_length 20;`</td>
      <td>Indica o tamanho mínimo em bytes de um ficheiro comprimido</td>
    </tr>
    <tr>
      <td>`gzip_http_version`</td>
      <td>`gzip_http_version número de versión;`</td>
      <td>`gzip_http_version 1.1;`</td>
      <td>Define a partir de que versão do HTTP uma solicitação recebe uma resposta compactada</td>
    </tr>
    <tr>
      <td>`gzip_types`</td>
      <td>`gzip_types tipo de contenido;`</td>
      <td>`gzip_types text/html;`</td>
      <td>Define para que tipos de conteúdos a compressão é válida (é possível para: CSS, JSON, XML, etc.)</td>
    </tr>
  </tbody>
</table>

## 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](https://www.whatsmyip.org/http-compression-test/ "HTTP Compression Test – WhatsMyIP.org").


This is a markdown version of: [https://www.ionos.com/pt-pt/digitalguide/servidores/know-how/o-que-e-o-gzip-e-quais-sao-as-suas-vantagens/](https://www.ionos.com/pt-pt/digitalguide/servidores/know-how/o-que-e-o-gzip-e-quais-sao-as-suas-vantagens/) for AI/LLM consumption.