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

Fastest way to download files in Node.js?

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

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

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

  1. 使用 Node 的内置 http 库,如下例所示。

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

    exec('wget -P ' + path + ' ' + url)
    

我知道这些示例可能是错误的编码,但仅供说明之用。我还读到人们通常更喜欢使用 Node 的 http,因为它不使用任何外部库,所以更好。

不过,我只关心速度。我的问题是下载文件的最快方式是什么?

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

此外,这些方法是否有任何缺点(除了速度)?还有其他我没有包括的方法吗?

谢谢!

由于网络和 io 的限制,没有理由根据 "speed" 选择您的情况的方法。下载速度和写入速度不受您的控制(以编程方式),只剩下各个方法本身的速度。由于网络和 io 具有最大速度,因此使用执行最快的方法并不重要,因为一旦您开始考虑下载多个文件,该方法最终将受到网络 and/or io 的限制。

使用对情况更有意义的方法。在您的情况下,如果您尝试使用节点下载文件,对我来说使用 node.js 比使用子进程 wget 更有意义。