Nginx(十九) range请求-断点续传/多线程下载
2024-01-07 23:47:48
????????range请求允许服务器只发送请求的一部分响应数据给客户端,通常对大文件传输时,用以实现断点续传、多线程下载等功能。若服务端响应信息头中包含字段 Accept-Ranges:bytes,则表示服务端支持范围请求,且节点范围的单位为字节(bytes)。
????????在 Nginx 缓存默认配置下,Nginx 处理完一个大文件的初始请求后,后续的用户请求必须等待整个文件下载结束并存入缓存后才可以继续被处理,整个过程非常耗时。为解决这个问题,Nginx 提供了 ngx_http_slice_module 模块,用以缓存范围请求的支持。该模块将文件分成更小的切片(slices),客户端每个范围请求覆盖特定的切片,如果该范围没有缓存,则从源服务器请求后存入缓存,否则就从缓存中返回数据。
????????http_slice 模块配置指令如下表所示。
Syntax:?? ?slice size;
Default:?? ?slice 0;
Context:?? ?http, server, location
Syntax:?? ?max_ranges number;
Default:?? ?—
Context:?? ?http, server, location
This directive appeared in version 1.1.2.?
????????配置样例如下:
location / {
slice 1m; # 切片大小为1MB
proxy_cache cache; # 缓存共享内存名称为cache
proxy_cache_key $uri$is_args$args$slice_range; # 设置缓存key
proxy_set_header Range $slice_range; # 添加头字段Range的字段值为
# $slice_range
proxy_cache_valid 200 206 1h; # 响应状态码为200及206的内容缓存有效期为1h
proxy_pass http://localhost:8000;
}
文章来源:https://blog.csdn.net/ShenDaiSun/article/details/135446452
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!