在Node.js中下载文件的最快方法?

时间:2017-02-23 19:46:06

标签: javascript node.js http curl wget

我试图从Ubuntu服务器上的外部网站下载PDF文件。

我的脚本在Node.js中运行,下载尽快完成非常重要。

该文件应该直接保存到磁盘上。我找到了两种实现此目的的方法......

  1. 使用Node&#39}的bult-in http库,如下例所示。

    let file = fs.createWriteStream(path)
    http.get(url, response => response.pipe(file))
    
  2. 使用节点的wget库调用child_process,如下所示。我也知道还可以使用其他命令,例如curl

    exec('wget -P ' + path + ' ' + url)
    
  3. 我知道这些示例可能是错误的编码,但仅用于说明。我还读过,人们通常更喜欢使用Node http,因为它没有使用任何外部库,所以更好。

    然而,我只关心速度。我的问题是下载文件的最快方法是什么?

    我一直在关注https://www.hacksparrow.com/using-node-js-to-download-files.html,这表明wget是最快的解决方案,但我不确定这个结论是如何达成的。

    此外,任何方法都有任何缺点(速度除外)吗?还有其他方法可以解决这个问题吗?

    谢谢!

1 个答案:

答案 0 :(得分:-1)

由于网络和io限制,没有理由根据“速度”选择您的案例中的方法。下载速度和写入速度超出您的控制范围(以编程方式),只留下各个方法本身的速度。由于网络和io具有最大速度,因此使用执行速度最快的方法并不重要,因为一旦您开始考虑下载多个文件,所述方法最终将受到网络和/或io的限制。

使用对情况更有意义的方法。在您的情况下,如果您尝试使用节点下载文件,那么使用node.js来执行此操作更有意义,而不是使用子进程进行wget。