一、nginx作为文件发布服务器是如何处理大文件下载的?
场景1:nginx发布一个2G大小的视频文件,文件名1.mp4
使用chrome访问 example.com/1.mp4,chrome会自动播放视频内容
使用视频暂停功能,模拟大文件传输中断的情况
使用chrome的F12,追踪每一次暂停操作的请求状态
如图所示,可以看到第一次请求时的状态码是200,随后都是206,并且文件类型有所不同首次请求1.mp4第二次请求1.mp4
可以看到,首次访问获取的是文件的元数据,包含文件类型、大小等信息;后面的访问是获取的真实数据。如果传输是顺利流畅的nginx会一直向chrome发送数据直至传输完成,那么随着链接断开(手动暂停),发生了什么呢?chrome发起请求,nginx传输数据
chrome点击暂停,nginx和chrome的连接断开
chrome恢复暂停,nginx和chrome重新连接,数据重新发送,直至再次断开或传输完成最后一次请求1.mp4
分析第二次请求和最后一次请求的图片,在响应头response header中请关注context-range和context-length两个参数context-range:文件偏移量标识,用于记录文件传输的开始字节和结束字节
context-length:文件大小,单位字节&#