<!-- review: finished -->

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

# Zstandard (zstd)

该模块添加了对响应进行 Zstandard 压缩的支持，包括动态压缩（即时）和静态压缩（预压缩文件）。与 gzip 相比，zstd 在相当或更好的压缩率下提供更高的压缩和解压缩速度。

该模块由两个组件组成：

- **http_zstd_filter** — 用于动态压缩响应；
- **http_zstd_static** — 用于提供预压缩文件。

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

## 安装

要 [安装](https://cn.angie.software//angie/docs/installation/index.md#install-packages) 该模块，请使用以下软件包之一：

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

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

## 模块加载

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

## 配置示例

```nginx
server {
    listen 80 default_server;

    zstd_types text/plain text/css;
    zstd_min_length 256;         # 压缩的最小响应长度
    zstd_comp_level 3;           # 压缩级别（1 到 22）

    # 动态文件压缩
    location / {
        zstd on;
        root /usr/share/angie/html;
    }

    # 后端响应的动态压缩
    location /bk/ {
        zstd on;
        proxy_pass http://127.0.0.1:8081/;
    }

    # 使用预压缩的 .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>

## 工作原理

您可以组合使用动态压缩（`zstd on`）和静态压缩（`zstd_static on`）。在这种情况下，服务器将首先查找预压缩的 `.zst` 文件。如果不存在，它将动态压缩响应。

仅当 `Accept-Encoding` 请求头包含 `zstd` 时才执行压缩，例如：

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

如果应用了压缩或找到了预压缩文件，则会添加以下响应头：

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

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

## 更多信息

完整文档和源代码可在以下位置获取：
[https://github.com/tokers/zstd-nginx-module](https://github.com/tokers/zstd-nginx-module)
