107
slice 模块
Syntax:slice
size
;
Default: slice 0;
Context:http
, server
, location
功能:通过range协议将大文件分解多个小文件,更好的用缓存为客户端的range协议服务
模块:--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 1h;
proxy_pass http://localhost:8000;
}
下游服务器代码示列
server {
listen ;
server_name shop**.com.cn;
location / { root html;
proxy_cache two;
proxy_cache_valid 1m;
proxy_pass http://192.168.0.51:8012; #代理到上游服务器
}
}
上游服务器代码示列 在html里有个大文件
server {
listen ;
default_type text/plain;
root html; location / { }
}
请求示列
curl -r 10000-10010 http://shop**.com.cn:8080/step -I //-r 表示启用range
返回示列
HTTP/1.1 Partial Content
Server: openresty/1.13.6.2
Date: Fri, Mar :: GMT
Content-Type: text/plain
Content-Length: 11 #获取的实际数量 因为 10000-10010 长度是11
Connection: keep-alive
Last-Modified: Fri, Mar :: GMT
Vary: Accept-Encoding
ETag: "5c81cfd6-281c558"
Content-Range: bytes -/42059096 #这里会看到总量与取量
但是有个问题,如果用户并发请求缓存的话会影响性能 一般用多线程并且使用range协议的话
proxy_cache_path data/tmpcache levels=: keys_zone=two:10m loader_threshold=
loader_files= max_size=200m inactive=1m;
server {
listen ;
server_name shop**.com.cn;
location / { root html;
slice 1m;
proxy_cache_key $uri$is_args$args$slice_range;
proxy_set_header Range $slice_range; #这里必须要加range协议到头部 而且需要加范围值
proxy_cache two;
proxy_cache_valid 1m;
proxy_pass http://192.168.0.51:8012;
}
}