Nginx(十九) range请求-断点续传/多线程下载

本文介绍了如何利用Nginx的ngx_http_slice_module模块处理大文件范围请求,解决初始请求后全量下载耗时问题,通过切片缓存提高效率。示例配置展示了如何配置切片大小、缓存策略和有效时间。
摘要由CSDN通过智能技术生成

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

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值