<!-- review: finished -->

<a id="external-zstd"></a>

# Zstandard (zstd)

O módulo adiciona suporte para compressão Zstandard de respostas, tanto dinâmica (em tempo real) quanto estática (arquivos pré-comprimidos). Comparado ao gzip, o zstd oferece velocidades de compressão e descompressão mais altas com taxas de compressão comparáveis ou melhores.

O módulo consiste em dois componentes:

- **http_zstd_filter** — para comprimir respostas dinamicamente;
- **http_zstd_static** — para servir arquivos pré-comprimidos.

<a id="installation-33"></a>

## Instalação

Para [instalar](https://pt.angie.software//angie/docs/installation/index.md#install-packages) o módulo, use um dos seguintes pacotes:

- Angie: `angie-module-zstd`
- Angie PRO: `angie-pro-module-zstd`

<a id="module-loading"></a>

## Carregamento do Módulo

Habilite os módulos no contexto `main{}`:

```nginx
load_module modules/ngx_http_zstd_filter_module.so;
load_module modules/ngx_http_zstd_static_module.so;
```

<a id="example-configuration-2"></a>

## Exemplo de Configuração

```nginx
server {
    listen 80 default_server;

    zstd_types text/plain text/css;
    zstd_min_length 256;         # Comprimento mínimo da resposta para compressão
    zstd_comp_level 3;           # Nível de compressão (1 a 22)

    # Compressão dinâmica de arquivos
    location / {
        zstd on;
        root /usr/share/angie/html;
    }

    # Compressão dinâmica de respostas de backend
    location /bk/ {
        zstd on;
        proxy_pass http://127.0.0.1:8081/;
    }

    # Usando arquivos pré-comprimidos .zst
    location /static/ {
        zstd_static on;
        root /usr/share/angie;
    }
}

server {
    listen 8081;
    location / {
        root /usr/share/angie/html;
        index index.html;
    }
}
```

<a id="how-it-works"></a>

## Como Funciona

Você pode combinar compressão dinâmica (`zstd on`) e estática (`zstd_static on`). Neste caso, o servidor primeiro procurará por um arquivo pré-comprimido `.zst`. Se não existir, ele comprimirá a resposta dinamicamente.

A compressão só é realizada quando o cabeçalho `Accept-Encoding` inclui `zstd`, por exemplo:

```none
Accept-Encoding: gzip, zstd
```

Se a compressão for aplicada ou um arquivo pré-comprimido for encontrado, o seguinte cabeçalho de resposta é adicionado:

```none
Content-Encoding: zstd
```

<a id="more-information"></a>

## Mais Informações

Documentação completa e código-fonte estão disponíveis em:
[https://github.com/tokers/zstd-nginx-module](https://github.com/tokers/zstd-nginx-module)
