proxy_cache_path /etc/nginx/conf.d/cachepath levels=1:2:2 keys_zone=two:10m loader_threshold=300 loader_files=200 max_size=200m inactive=5m;
upstream cacheups {
server 127.0.0.1:8080;
}
server {
server_name cache.zhangdazhi.com;
location / {
proxy_pass http://cacheups;
proxy_cache two;
proxy_cache_valid 200 1m;
add_header X-cache-Status $upstream_cache_status;
slice 1m; #定义分片的大小为1M
proxy_cache_key $uri$is_args$args$slice_range; #一定要定义$slice_range
proxy_set_header Range $slice_range; #定义一个请求头部
}
# location ~ /purge(/.*){
# proxy_cache_purge two $scheme$1;
#}
}
当不使用slice分片时,
[root@hk conf.d]#curl -r 2000010-2000019 cache.zhangdazhi.com/微信图片_20190111164544.jpg -I #当访问一个大文件时
curl -r表示客户端使用range协议分片访问一个大的文件,本次测试只访问大文件的2000010-2000019M
[root@hk logs]#tail -f access.log #查看上游服务发现响应给客户端的是整个文件的大小2785502
127.0.0.1 - - [28/May/2019:16:57:47 +0800] "GET /\xE5\xBE\xAE\xE4\xBF\xA1\xE5\x9B\xBE\xE7\x89\x87_20190111164544.jpg HTTP/1.0" 200 2785502 "-" "curl/7.29.0"
[root@hk html]#ll
-rw-r--r-- 1 root root 2785502 Jan 11 16:45 微信图片_20190111164544.jpg
如果使用slice模块
[root@hk conf.d]#curl -r 2000010-2000019 cache.zhangdazhi.com/微信图片_20190111164544.jpg -I #客户端使用range协议访问时,如果未命中缓存上游服务器响应给客户端的文件大小为定义的1m大小
[root@hk logs]#tail -f access.log
127.0.0.1 - - [28/May/2019:17:01:18 +0800] "GET /\xE5\xBE\xAE\xE4\xBF\xA1\xE5\x9B\xBE\xE7\x89\x87_20190111164544.jpg HTTP/1.0" 206 1048576 "-" "curl/7.29.0"
这种场景适用于客户端使用range协议访问一个比较大的文件
网友评论