1、什么是Range?

  当用户在听一首歌的时候,如果听到一半(网络下载了一半),网络断掉了,用户需要继续听的时候,文件服务器不支持断点的话,则用户需要重新下载这个文件。而Range支持的话,客户端应该记录了之前已经读取的文件范围,网络恢复之后,则向服务器发送读取剩余Range的请求,服务端只需要发送客户端请求的那部分内容,而不用整个文件发送回客户端,以此节省网络带宽。

 2、HTTP1.1规范的Range是怎样一个约定呢?

  如果Server支持Range,首先就要告诉客户端,咱支持Range,之后客户端才可能发起带Range的请求。这里套用唐僧的一句话,你不说我怎么知道呢。response.setHeader('Accept-Ranges', 'bytes');

  Server通过请求头中的Range: bytes=0-xxx来判断是否是做Range请求,如果这个值存在而且有效,则只发回请求的那部分文件内容,响应的状态码变成206,表示Partial Content,并设置Content-Range。如果无效,则返回416状态码,表明Request Range Not Satisfiable(http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.17 )。如果不包含Range的请求头,则继续通过常规的方式响应。

原文:http://www.cnblogs.com/tekkaman/archive/2013/03/19/2969581.html

转载于:https://blog.51cto.com/snow2016/1873363

HTTP之Range相关推荐

  1. [转]python各模块的学习

    [-] 01 关于本书 02 代码约定 03 关于例子 04 如何联系我们 1 核心模块 11 介绍 111 内建函数和异常 112 操作系统接口模块 113 类型支持模块 114 正则表达式 115 ...

  2. Go 知识点(06)— for range 切片并对切片进行 append 不会造成死循环

    想想下面代码会发生什么? func main() {a := []int{1, 2, 3}for _, v := range a {a = append(a, v)fmt.Println(" ...

  3. Go 学习笔记(63)— Go 中的 for ... range 对切片和数组的差异

    1. 迭代对象是切片,迭代过程中修改切片 package mainimport "fmt"func main() {// 示例1.numbers1 := []int{1, 2, 3 ...

  4. pytorch.range() 和 pytorch.arange() 的区别

    总结: torch.range(start=1, end=6) 的结果是会包含end的, 而torch.arange(start=1, end=6)的结果并不包含end. 两者创建的tensor的类型 ...

  5. Go 中 time.Parse 报错:year/month/day hour/minute/second out of range 时间格式化为什么是 2006-01-02 15:04:05?

    1. 问题现象 在使用 Go 语言的 time.Parse 解析时间时遇到以下错误: func main() {timeParse, err := time.Parse("2006-11-0 ...

  6. Go 学习笔记(29)— range 作用于字符串、数组、切片、字典、通道

    1. 使用说明 range 应用于不同数据类型时,类似迭代器操作,返回 (索引, 值) 或 (键, 值). 下表是对应的结构: type 1st value 2nd value string inde ...

  7. Go 学习笔记(9)— 循环(for、for range访问数组、切片、字符串和通道、goto、continue、break)

    1. for 循环格式 Go 语言仅支持一种循环语句即 for 循环,它有 3 种形式,只有其中的一种使用分号. 和 C 语言的 for 一样 for init; condition; post { ...

  8. usaco Home on the Range

    dp关系式搞清楚就行了,我看题解的没想出来.a[i][j]=min(a[i+1][j],a[i][j+1],a[i+1][j+1])+1;他的右方下方右下方保证了他可以延伸的长度. /* ID: ji ...

  9. opencv中Range类的使用

    #include<iostream> #include<opencv2/opencv.hpp> #include<vector> using namespace s ...

  10. python for i in range 三维_python中的三维卷积

    虽然循环可以工作,但跟踪嵌套循环也很困难.您可以考虑调用卷积定理来更容易地执行卷积.见here.在 使用numpy的fft模块,您可以计算原始图像堆栈的n维离散Fourier变换,并将其乘以大小相同的 ...

最新文章

  1. pte模拟考试_首考七炸!PTE首战即告捷,拿下爱丁堡大学直通offer
  2. java实例域静态域_有关java 实例域 静态域 静态方法
  3. 1650显卡学计算机,适合老电脑升级?GTX1650显卡开箱,性价比依然不高!
  4. win7计算机个性化设置,笔记本电脑windows7系统如何用好电脑个性化设置
  5. 信息学奥赛一本通 2068:【例2.6】鸡兔同笼
  6. 一元三次方程重根判别式_一元四次方程的常规解法
  7. Microstrategy CEO:比特币是一种货币资产 正在迅速取代黄金作为价值存储
  8. 查理.芒格,谈投资的秘密
  9. python可以实现那些功能_30 个Python代码实现的常用功能,精心整理版
  10. WebX框架解析及使用教程
  11. 常用HTML5开发工具有哪些?
  12. B站在​港交所双重主要上市 陈睿:将扩大我们投资者基础
  13. Android 腾讯Bugly的应用升级热更新
  14. 马虎词汇教程31-35(转载)
  15. 11月面完美团+网易+腾讯+百度+滴滴熬夜5天整理面经攒人品
  16. OnActionExecuting 中设置跳转指定网址或路由
  17. Hive months_between(日期相减不正确处理)
  18. springboot三:整合freemarker、Thymeleaf
  19. Android 流式布局FlowLayout
  20. electron exec 神坑

热门文章

  1. 关于设置安卓屏幕的显示方向
  2. 软/硬件负载均衡产品 你知多少?
  3. 次世代的会话管理项目 Spring Session
  4. nginx 1.11.0实现http和https正向代理
  5. 10-10-归并排序-内部排序-第10章-《数据结构》课本源码-严蔚敏吴伟民版
  6. 设计模式精髓—封装变化
  7. 国外程序员访谈:学无止境
  8. [论文泛读] Dynamic placement of virtual machines for managing sla violations (IM, 2007)
  9. 【转】两个算法题,感觉挺有意思
  10. DotNetZip使用简介