【问题标题】:Do http file downloads download byte sequentially?http文件是否按顺序下载下载字节?
【发布时间】:2011-03-07 14:18:39
【问题描述】:

所以我从我的服务器下载了几个 GiB tgz 存档,我想知道谷歌浏览器是否正在下载第一个字节,写入它,然后移动到第二个字节或只是获取随机片段。

基本上该文件将永远占用,我在服务器端版本(开始下载后)使用 Split 来创建 200MiB 片段。我真的很想知道我是否可以从谷歌浏览器中获取部分下载的文件并将其在本地拆分成相同大小的部分,然后匹配我需要的服务器中的部分。

【问题讨论】:

  • HTTP 是顺序的。要解决您的问题,您应该只使用下载管理器,它会通过同时请求 8 次(或其他任何时间)来“多线程”下载,每次请求不同的字节偏移量:请参阅 Range 标头。
  • @thirtydot 它是校园网的限制,同一协议上的更多连接会减慢速度,所以我有一个通过 http 和一个通过 SSH
  • @thirtydot, http 提供随机访问:w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35
  • @Snowbear:不,它允许您从任意字节偏移量开始顺序下载。我已经提到了Range 标头。
  • @thirtydot:随机访问和从任意字节偏移顺序下载有什么区别?如果我愿意,我可以下载 1 字节的片段,所以它是随机访问的,不是吗?

标签: bash google-chrome split


【解决方案1】:

尝试拆分部分下载的文件,然后通过比较它们的哈希值将本地片段与服务器上的相应片段进行比较。这似乎比猜测 Chrome 如何处理它更容易。

【讨论】:

  • 这将是一个愚蠢的问题,但它们是 bash 中的快速哈希命令吗?
  • @Greg: md5sum [filename],例如。
【解决方案2】:

通常,浏览器按顺序处理下载​​。但是,您可以使用附加/扩展下载管理器,我相信 Chrome 也有很多。这些通常会使用多个连接来加载文件的不同部分,并能够暂停/恢复下载。

【讨论】:

  • 我受到校园网速的限制,他们限制我们下载太多,甚至在限制之前(~50kbps)我们限制在 250kbps,在 http 上,我的方法是使用 SSH和 HTTP,所以这些是我唯一能做的 2 个连接
  • 使用下载管理器不会改变协议 AFAIK,所以它应该仍然是 HTTP 流量......它只是使用高级 HTTP 请求来获取文件的特定部分(参见 tools.ietf.org/html/rfc2616#section-14.35 )。
【解决方案3】:

在命令行你可以试试 mcurl:

"Multiple cURL" is a shell script to download files in multiple parts via cURL...

http://www.goforlinux.de/scripts/mcurl/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-09
    • 2010-12-20
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多