0

在我开发的网络应用程序中,用户可以选择通过浏览器下载大文件。这些文件可以存储在不同的远程存储中,例如 Amazon S3。如果文件下载花费了超过几分钟的时间,那么由于各种原因在服务器端跟踪它的进度会很方便。

因此,Web 应用程序和 node.js API 位于一个地方,文件可以位于任何地方。我在想的是通过node.js代理文件下载。所以它看起来像 --> 用户在 web 应用程序上单击文件下载按钮 --> 节点向 S3 请求文件并将其流式传输给用户并更新数据库以跟踪进度,因为文件大小和发送的数据是已知的。

我想知道的:

  1. 这在性能方面是否合理?数百个并行下载会杀死普通服务器吗?
  2. 如何使用节点处理多部分下载?
  3. 这个问题有更好的解决方案吗?

非常感谢你的回答 !

4

1 回答 1

1

解决方案 1:最好的方法是直接从您的服务器下载文件。这使您能够观察进度,完全控制并在需要时添加一些功能。您的下载性能取决于您的服务器。

解决方案 2:如果您不想存储文件或不想提供文件,您可以提供<a href="link_to_the_remote_file">link</a>指向远程服务器文件的链接。对于您的服务器,没有影响,这很好。尽管如此,你还是看不到进展。

因此,要么是您的服务器管理下载,要么是远程服务器。两者都有优点和缺点。但是对于您的服务器,您将需要解析文件。您可以使用模块,但如果您想自己制作(witch 更好),请查看 nativefsstreammodules 以及http protocol. 在另一种情况下,你不需要,你什么也不做。

您的解决方案是:远程服务器为您的服务器提供文件,该服务器为客户端提供服务。 我暂时从未测试过,但您似乎做了两件事:下载上传。最好是上面的解决方案下载或上传。

于 2014-01-02T19:36:47.173 回答