【问题标题】:Why would HTTP transfer via wget be faster than lftp/pget?为什么通过 wget 进行 HTTP 传输会比 lftp/pget 更快?
【发布时间】:2010-05-03 21:38:41
【问题描述】:

我正在构建需要通过 HTTP 和 FTP 进行大量文件传输的软件。通常,我使用 axel 或带有 pget 的 lftp 等多连接下载加速器获得更快的 HTTP 下载。在某些情况下,我发现文件传输速度提高了 2 到 3 倍,例如:

axel http://example.com/somefile

lftp -e 'pget -n 5 http://example.com/somefile;quit'

对比只使用 wget:

wget http://example.com/somefile

但其他时候,wget 比 lftp 快得多。奇怪的是,即使我使用 get 进行 lftp 也是如此,就像这样:

lftp -e 'pget -n 1 http://example.com/somefile;quit'

我了解通过多个连接下载文件并不总是会加快速度,具体取决于带宽的限制方式。但是:为什么会慢?尤其是在使用 -n 1 调用 lftp/pget 时?

【问题讨论】:

  • 这应该在superuser.com
  • 您的软件不应该在命令行中运行。使用 curl,它包含大多数主要语言的包装器。
  • @Byron Whitlock - 出于好奇,为什么不呢?我经常发现使用子进程比在我的应用程序中添加一堆库代码更好。恕我直言,它既有优点也有缺点。
  • @jondahl 恕我直言,你没有得到那么好的控制水平。当某些事情失败时,您必须解析一个字符串。您必须担心使用安装程序安装外部应用程序。使用库,您可以自己有效地执行多线程,这有时会更好。使用外部应用程序开发起来更方便,但在野外可能会让人头疼。
  • 谢谢大家。 @Byron Whitlock,我为此使用了用 Ruby 包装的 libcurl,但是在 3GB 下载时写入文件时出现间歇性超时。这些工具在命令行级别得到了很好的优化和可靠。再加上加速下载的可能性,我选择了 lftp。

标签: http ftp download wget


【解决方案1】:

HTTP 服务器是否有可能使用 gzip 压缩流?我不记得 wget 是否处理 gzip Content Encoding。如果是这样,那么这可能解释了性能提升。另一种可能性是管道中某处存在 HTTP 缓存。你可以试试

wget --no-cache --header="Accept-Encoding: identity"

并将其与基于 FTP 的传输时间进行比较。

【讨论】:

  • 更不用说内容分发网络、QOS 路由(特别是与非被动 ftp 相关)、代理缓存......
猜你喜欢
  • 1970-01-01
  • 2019-05-10
  • 1970-01-01
  • 1970-01-01
  • 2017-10-27
  • 1970-01-01
  • 2012-05-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多