0

我在服务器上有 8gb 文件,我想使用 http 多范围请求从该文件下载 1.5gb。我使用卷曲。

除第一个请求外,所有请求都均匀分布在文件中,其中包含 500mb 的大范围(总共有 161 个请求)。

我发现,第一个大范围请求的下载时间约为 40 秒,总时间约为 560 秒。这意味着,我下载 500mb 40 秒,下载 1gb 520 秒。因此,对于均匀分布的请求,我的速度减慢了 6 倍。我还注意到,当这种均匀分布的请求执行时,下载速率会下降约 6-8 倍。

我不明白,为什么会这样。每个请求中的范围都按偏移量增加排序,所以我不明白,为什么我们会出现这样的减速。你能解释一下,什么会导致这样的混乱?此外,我如何提高此类请求集的性能?

如果需要,我可以提供一组请求和时间。

4

1 回答 1

1

您没有给我们太多工作,但您可能需要检查/考虑以下几点:

  • 您实际上是在执行具有多个范围的单个请求,还是执行多个请求,每个请求都有一个单独的范围?

  • 您确定您的服务器(和脚本,如果它是脚本)实际上支持字节范围请求吗?

  • 您是从静态文件下载还是从服务器动态生成的文件下载?如果是后者,请考虑每个请求意味着服务器可能需要在仅发送您感兴趣的部分之前重新生成完整文件。

  • 无论如何,在实际下载之前,每个请求都需要花费一点时间来建立(TCP 连接、SSL/TLS 握手(如果适用)、HTTP 请求)。如果您使用单独的 curl 调用或禁用 keep-alives,则尤其如此

多范围请求的原因是什么?您确定下载整个文件(并可能在客户端进行一些后处理)不仅更快/更简单吗?

于 2015-12-29T15:03:08.393 回答