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 200 206 1h; proxy_pass http://localhost:8000; }
下游服务器代码示列
server { listen 8080; server_name shop**.com.cn; location / { root html; proxy_cache two; proxy_cache_valid 200 206 1m; proxy_pass http://192.168.0.51:8012; #代理到上游服务器 } }
上游服务器代码示列 在html里有个大文件
server { listen 8012; default_type text/plain; root html; location / { } }
请求示列
curl -r 10000-10010 http://shop**.com.cn:8080/step -I //-r 表示启用range
返回示列
HTTP/1.1 206 Partial Content Server: openresty/1.13.6.2 Date: Fri, 15 Mar 2019 10:07:02 GMT Content-Type: text/plain Content-Length: 11 #获取的实际数量 因为 10000-10010 长度是11 Connection: keep-alive Last-Modified: Fri, 08 Mar 2019 02:13:42 GMT Vary: Accept-Encoding ETag: "5c81cfd6-281c558" Content-Range: bytes 10000-10010/42059096 #这里会看到总量与取量
但是有个问题,如果用户并发请求缓存的话会影响性能 一般用多线程并且使用range协议的话
proxy_cache_path data/tmpcache levels=2:2 keys_zone=two:10m loader_threshold=300 loader_files=200 max_size=200m inactive=1m; server { listen 8080; 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 200 206 1m; proxy_pass http://192.168.0.51:8012;
}
}