有个同事说,发现现在对外下载安装包的服务器不支持断点续传,我听了一阵纳闷,lighttpd server对于静态文件应该默认支持断点续传的,登机器查看lighttpd配置文件发现

对断点续传的支持被禁用了,lighttpd的说明里对该配置是这样表述的:

server.range-requests

Allowed values: enable , disable

Default: enable

This option defines whether range requests are allowed or not.

Range request are requests of one or more sub-ranges of a file. Range requests are very helpful for resuming interrupted downloads and fetching small portions of huge files.

对于PDF还有特殊的说明,断点续传pdf的时候会crash

Note: Adobe Acrobat Reader can crash when it tries to open a PDF file if range requests are enabled.

用以下匹配规则设置对pdf文件断点续传的禁用

$HTTP["url"] =~ "\.pdf$" {
server.range-requests = "disable"
}

然后,想怎么能马上检查一个服务器是否支持断点续传,用curl实现

$ curl -r 0-1 -o range_test.part1 'url'

其中url为文件的下载地址

如果在目录下生成了一个2字节大小的 range_test.part1 文件,那么说明服务器支持断点续传,如果把整个文件拉下来了,说明不支持


刚写完就被同事说直接curl -I 就能马上看出来服务器是否支持断点续传,执行

$ curl -I 'url'

看返回的http头信息,如果有 Accept-Ranges: bytes 表示服务器支持Range请求,以及服务器所支持的单位是字节(这也是唯一可用的单位)。并且,服务器支持断点续传,以及支持同时下载文件的多个部分,也就是说下载工具可以利用范围请求加速下载该文件。如果有 Accept-Ranges: none 响应头表示服务器不支持范围请求。

例如:

$ curl -I http://zhangmenshiting.baidu.com/data2/music/118358164/14385500158400128.mp3

返回

HTTP/1.1 200 OK
Accept-Ranges: bytes
Last-Modified: Tue, 22 Apr 2014 12:42:15 GMT
Expires: Sun, 25 May 2014 11:22:57 GMT
x-bs-version: D18E23AE8230A245A8EB6B77EFA5B92D
ETag: d5bd29010e1bf1c861d4b34f0f74a968
Content-Type: audio/mpeg
x-bs-request-id: MTAuNDYuMTU4LjIxOjgwODA6MTQ1MzE2ODg3ODoyNS9BcHIvMjAxNCAxOToyMjo1NyA=
Content-Disposition: attachment; filename="ʱ¼䶼ȥń¶魭p3"
x-bs-meta-crc32: 3366589278
Content-MD5: d5bd29010e1bf1c861d4b34f0f74a968
x-bs-client-ip: MTE1LjIzOS4yMTIuMTMz
x-bs-uncopyable: enable
Cache-Control: max-age=2592000
Content-Length: 3537110
Connection: close
Date: Fri, 25 Apr 2014 11:22:57 GMT
Server: BaiduBS

说明服务器支持范围请求和断点续传,换一个

$ curl -I http://www.taobao.com

返回

HTTP/1.1 200 OK
Server: Tengine
Date: Fri, 25 Apr 2014 11:26:06 GMT
Content-Type: text/html; charset=gbk
Connection: keep-alive
Vary: Accept-Encoding
Expires: Fri, 25 Apr 2014 12:26:06 GMT
Cache-Control: max-age=3600

就不支持

linux curl命令验证服务器断点续传支持的更多相关文章

  1. (转)Linux curl命令参数详解

    Linux curl命令参数详解 命令:curl在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具, ...

  2. Linux curl 命令详解

    命令概要 该命令设计用于在没有用户交互的情况下工作. curl 是一个工具,用于传输来自服务器或者到服务器的数据.「向服务器传输数据或者获取来自服务器的数据」 可支持的协议有(DICT.FILE.FT ...

  3. Linux curl 命令模拟 POST/GET 请求

    Linux curl 命令模拟 POST/GET 请求   本文链接:https://blog.csdn.net/sunboy_2050/article/details/82156402 curl 命 ...

  4. Linux curl命令使用代理、以及代理种类介绍(转)

    Linux curl命令使用代理.以及代理种类介绍   本文转自http://aiezu.com/article/linux_curl_proxy_http_socks.html,感谢作者 有时出于个 ...

  5. linux curl命令:curl: (7) couldn't connect to host ?

    linux curl命令:curl: (7) couldn't connect to host ? 使用linux命令 curl http://www.test.com 出现如下错误:curl: (7 ...

  6. linux curl 命令详解,以及实例

    linux curl是一个利用URL规则在命令行下工作的文件传输工具.它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称url为下载工具. 一,curl命令参数,有好多我没有用过,也不知道翻 ...

  7. [转载] Linux curl命令详解

    转载自http://www.linuxdiyf.com/linux/2800.html 命令:curl在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的htt ...

  8. Linux curl 命令下载文件

    引用自http://blog.csdn.net/wh211212/article/details/54285921 命令:curl 在Linux中curl是一个利用URL规则在命令行下工作的文件传输工 ...

  9. Linux curl命令【curl】

    命令:curl 在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具 ...

随机推荐

  1. PHP同时操作两个mysql数据库

    $connect=mysql_connect("localhost","root","",true); $db=mysql_select_d ...

  2. C++ Combobox输入时自动完成

    Combobox 在输入时自动完成 关键点 实现过程 BOOL m_bAuto; BOOL CProject02Dlg::PreTranslateMessage(MSG* pMsg)  {     i ...

  3. eclipse设置快捷键sysout+Alt+/后出System.out.println!亲測可用!

    曾经一直用myeclipse,没有这方面的顾虑,如今换到了eclipse,非常多要自己设置了,比方非常多快捷键. 最经常使用的,执行到sysout ,eclipse总是不自己主动补全,非常是恼火!!! ...

  4. chrome浏览器频频崩溃,如何解决?

    之前chrome常崩溃,也没有找到原因,就将就着用吧,一直用到今天, 今天连续几次崩了,突然想到,难道是因为我访问的域名没有解析(能想到这个,是因为今天分配公司域名测试的时候常输错),于是就输入一个不 ...

  5. 考试必备神器-真题园手机客户端Android版1.1正式上线啦,欢迎大家下载使用!

    真题园-考试必备神器,爱学习,找真题! 真题园-考试必备神器,爱学习,找真题!1.真题园android客户端1.1版全新发布上线.2.最新教育资讯实时更新,了解行业动态新闻.3.最新最全的真题大全,最 ...

  6. java与.net比较学习系列开发环境和常用调试技巧常用操作快捷键

    调试         F5 F11 调试运行   CTRL+F5 暂无 非调试运行   F6 不适用 编译整个解决方案   SHIFT+F6 不适用 编译当前选择的工程   SHIFT+F5 CTRL ...

  7. 集合练习——Map部分

    练习: 输入诗的名称查询出诗的内容,当输入exit时,退出程序,“春晓”,“静夜思”,“鹅”. package CollectionPart; public class Poetry { privat ...

  8. YII缓存Cache

    缓存Cache 定义:将数据暂时存放在一个存储速度更快的介质上,下次读取数据时就可以从这个介质上来读取数据 介质:内存.文件.数据库(优化好的数据库) Yii缓存的分类:(framework/cach ...

  9. 百度编辑器1.4.3 .net版在vs2008的使用方法

    由于在官方下载的ueditor包是在vs2012下开发的,可以在vs2010中使用,但在vs2008中就会报错.折腾了一翻,现将解决方法分享给需要的朋友,其实就是把里面包含.net4.0的元素换成.n ...

  10. A swift Tour

    传统的认为,一个新的语言的第一个应用程序都会打印"Hellow,Word",在Swift中,可以只需要一行代码: pringln("Hello, word") ...