从技术上讲,托管(在服务器上)的方式有什么区别?
- 可以在下载时暂停并继续下载的文件,以及
- 需要一次性下载的文件?
答案1
服务器需要支持提供部分内容和处理部分请求的能力。大多数现代 Web 服务器都能够处理它,除非您使用内部构建的服务器。
您可以通过阅读此内容获取更多信息阿帕奇文档和相关 RFC。来自链接的文档 - 响应的示例。
HTTP/1.1 206 Partial Content
Date: Wed, 15 Nov 1995 06:25:24 GMT
Last-Modified: Wed, 15 Nov 1995 04:58:08 GMT
Content-type: multipart/byteranges; boundary=THIS_STRING_SEPARATES
--THIS_STRING_SEPARATES
Content-type: application/pdf
Content-range: bytes 500-999/8000
...the first range...
--THIS_STRING_SEPARATES
Content-type: application/pdf
Content-range: bytes 7000-7999/8000
...the second range
--THIS_STRING_SEPARATES--
答案2
一个常见的问题是缺少content-size
或content-range
标头。也许作者忘记在下载脚本中设置一个?
答案3
如果 HTTP 服务器支持范围检索请求(定义在 14.35 节中),则可以恢复下载。RFC 2616维基百科将其称为“字节服务“出于某些奇怪的原因。
- 服务器发送对或请求的
Accept-Ranges: bytes
响应以表明它支持字节服务。HEAD
GET
- 客户端发送一个
GET
包含的请求Range: bytes=aaa-bbb
,其中起始偏移量为aaa
文件开始后的字节数,范围的长度为bbb - aaa + 1
字节。 - 服务器发送状态 206(部分内容)响应,其中包括
Content-range: bytes aaa-bbb/cccc
,其中aaa-bbb
与之前相同,并且cccc
是文件的长度(以字节为单位)或者*
如果服务器无法确定,则后跟包含请求的字节范围的响应主体。如果范围超出范围,则服务器改为发送状态 416(请求的范围无法满足)响应。
一些视频播放器使用范围请求来支持视频搜索。Ogg 媒体容器使用插值二分搜索来支持该用例。
流行的 Web 服务器软件可以配置为提供静态文件的范围,但验证下载的服务器端脚本可能需要或不需要自己处理范围。(请查看脚本语言手册。)一些向公众开放的下载服务器运营商故意阻止范围请求,因为一些下载管理器利用对内容范围的支持向服务器发出多个请求,从而占用了可用于向其他用户提供下载的资源。