<!-- review: finished -->

<a id="http-slice"></a>

# Slice

该模块是一个过滤器，将请求拆分为子请求，每个子请求返回特定范围的响应。该过滤器提供了更有效的大响应缓存。

当 [从源代码构建](https://cn.angie.software//angie/docs/installation/sourcebuild.md#sourcebuild) 时，默认情况下不会构建此模块；它需要通过 `‑‑with‑http_slice_module` [构建选项](https://cn.angie.software//angie/docs/installation/sourcebuild.md#configure) 启用。

在来自 [我们仓库](https://cn.angie.software//angie/docs/installation/index.md#install-packages) 的包和镜像中，该模块已包含在构建中。

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

## 配置示例

```nginx
location / {
    slice             1m;
    proxy_cache       cache;
    proxy_cache_key   $uri$is_args$args$slice_range;
    proxy_set_header  Range $slice_range;
    proxy_cache_valid 200 206 1h;
    proxy_pass        http://localhost:8000;
}
```

在此示例中，响应被分割为 1 兆字节可缓存的切片。

<a id="directives-42"></a>

## 指令

<a id="index-0"></a>

<a id="id3"></a>

### slice

| [语法](https://cn.angie.software//angie/docs/configuration/configfile.md#configfile)   | `slice` size;          |
|--------------------------------------------------------------------------------------|------------------------|
| 默认值                                                                                  | `slice 0;`             |
| [上下文](https://cn.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location |

设置切片的大小。零值将禁用将响应分割为切片。

#### WARNING
请注意，值过低可能导致过多的内存使用和打开大量文件。

为了使子请求返回所需的范围，应该将 [$slice_range](#v-slice-range) 变量作为:samp:Range\`请求头字段传递给代理服务器。如果启用了 :ref:\`缓存 <proxy_cache>，应将 [$slice_range](#v-slice-range) 添加到 [缓存键](https://cn.angie.software//angie/docs/configuration/modules/http/http_proxy.md#proxy-cache-key) 中，并应 [启用](https://cn.angie.software//angie/docs/configuration/modules/http/http_proxy.md#proxy-cache-valid) 对状态码为 206 的响应的缓存。

<a id="built-in-variables-10"></a>

## 内置变量

<a id="v-slice-range"></a>

### `$slice_range`

以 [HTTP字节范围](https://datatracker.ietf.org/doc/html/rfc7233#section-2.1) 格式表示的当前切片范围，例如，`bytes=0-1048575`。
