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;
}
}