linux curl命令驗證服務器斷點續傳支持

有個同事說,發現如今對外下載安裝包的服務器不支持斷點續傳,我聽了一陣納悶,lighttpd server對於靜態文件應該默認支持斷點續傳的,登機器查看lighttpd配置文件發現html

對斷點續傳的支持被禁用了,lighttpd的說明裏對該配置是這樣表述的:服務器

server.range-requestscurl

Allowed values: enable , disable
工具

Default: enable
fetch

This option defines whether range requests are allowed or not.url

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.spa

對於PDF還有特殊的說明,斷點續傳pdf的時候會crashcode

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

用如下匹配規則設置對pdf文件斷點續傳的禁用htm

$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

就不支持

相關文章
相關標籤/搜索