有個同事說,發現現在對外下載安裝包的服務器不支持斷點續傳,我聽了一陣納悶,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 OKAccept-Ranges: bytesLast-Modified: Tue, 22 APR 2014 12:42:15 GMTExpires: Sun, 25 May 2014 11:22:57 GMTx-bs-version: D18E23AE8230A245A8EB6B77EFA5B92DETag: d5bd29010e1bf1c861d4b34f0f74a968Content-Type: audio/mpegx-bs-request-id: MTAuNDYuMTU4LjIxOjgwODA6MTQ1MzE2ODg3ODoyNS9BcHIvMjAxNCAxOToyMjo1NyA=Content-Disposition: attachment; filename="?¼??ń¶魭p3"x-bs-meta-crc32: 3366589278Content-md5: d5bd29010e1bf1c861d4b34f0f74a968x-bs-client-ip: MTE1LjIzOS4yMTIuMTMzx-bs-uncopyable: enableCache-Control: max-age=2592000Content-Length: 3537110Connection: closeDate: Fri, 25 Apr 2014 11:22:57 GMTServer: BaiduBS
說明服務器支持范圍請求和斷點續傳,換一個
$ curl -I http://www.taobao.com
返回
HTTP/1.1 200 OKServer: TengineDate: Fri, 25 Apr 2014 11:26:06 GMTContent-Type: text/html; charset=gbkConnection: keep-aliveVary: Accept-EncodingExpires: Fri, 25 Apr 2014 12:26:06 GMTCache-Control: max-age=3600
就不支持
新聞熱點
疑難解答