模块 ngx_http_slice_module

已知问题
配置示例
指令
     slice
嵌入式变量

ngx_http_slice_module 模块 (1.9.8) 是一个过滤器,它将请求分割成子请求,每个子请求返回响应的某个范围。该过滤器提供了更高效的大响应缓存。

默认情况下不构建此模块,应使用 --with-http_slice_module 配置参数启用它。

已知问题

目前,该模块在诸如 后台缓存更新 等子请求中无法按预期工作。在这种情况下,构造的请求不支持字节范围。

配置示例

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 兆字节的可缓存切片。

指令

语法 slice size;
默认值
slice 0;
上下文 http, server, location

设置切片的 大小。零值禁用将响应分割成切片。请注意,过小的值可能导致过度的内存使用和打开大量文件。

为了使子请求返回所需的范围,应将 $slice_range 变量 传递 给代理服务器作为 Range 请求头字段。如果启用 缓存,则应将 $slice_range 添加到 缓存键 中,并且应 启用 对状态码为 206 的响应的缓存。

嵌入式变量

ngx_http_slice_module 模块支持以下嵌入式变量

$slice_range
当前切片范围,采用 HTTP 字节范围 格式,例如,bytes=0-1048575