15、Nginx---slice模块,大文件分片请求

Nginx的slice模块通过将大文件请求分解为多个子请求,提高缓存效率,支持HTTPRange请求,允许客户端断点续传。当文件被切片,每个子请求的内容会被缓存为独立文件,即使源连接断开,已缓存的部分仍可使用。然而,若文件过大或切片过小可能导致文件描述符耗尽。启用slice需要配置slicesize,配合proxy_cache_key和proxy_set_headerRange来实现。
Nginx的slice模块可以将一个请求分解成多个子请求,每个子请求返回响应内容的一个片段,让大文件的缓存更有效率。。
  
HTTP Range请求:
HTTP客户端下载文件时,如果发生了网络中断,必须重新向服务器发起HTTP请求,这时客户端已经有了文件的一部分,只需要请求剩余的内容,而不需要传输整个文件,Range请求就可以用来处理这种问题。
  
如果HTTP请求的头部有Range字段,如下面所示:
表示客户端请求文件的第1025到第2048个字节,这时服务器只会响应文件的这部分内容,响应的状态码为206,表示返回是响应的一部分如果服务器不支持Range请求,仍然会返回整个文件,这是状态码200。

 实现原理:

客户端请求100个字节,起始于150,请求内容的范围是150-249。发到nginx之后根据slice配置,比如配置为100,那么就是0-100,100-200,200-300,这样就分为了3块,但是最终这个文件有多大就切分为多少块。之后nginx就会构造两个请求,第一个请求时100-199,然后第二个请求时200-300的。这两个请求返回之后会生成两个文件,第一个100-199,200-299。然后将其组合起来生成客户端要的150-249这样一个响应。
过程总结:以客户端向nginx请求一个10M文件,nginx进行4m的切片为例
  1. 客户端向nginx请求10M;
  2. nginx发起第一个切片(主请求)请求range:0-4194303;
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值