0

私が開発している Web アプリには、ユーザーがブラウザー経由で大きなファイルをダウンロードするオプションがあります。ファイルは、Amazon S3 などの別のリモート ストレージに保存できます。ファイルのダウンロードに数分以上かかった場合は、さまざまな理由からサーバー側で進行状況を追跡すると便利です。

したがって、Web アプリと node.js API は 1 つの場所に配置され、ファイルはどこにでも配置できます。私が考えていたのは、ファイルのダウンロードを node.js 経由でプロキシすることです。つまり、-> ユーザーが Web アプリのファイル ダウンロード ボタンをクリックする --> ノードが S3 にファイルを要求し、それをユーザーにストリーミングし、DB を更新して、ファイル サイズと送信されたデータが既知であるため、進行状況を追跡します。

知りたいこと:

  1. それはパフォーマンスの面で合理的ですか?何百もの並列ダウンロードが平均的なサーバーを殺してしまうのでしょうか?
  2. ノードでマルチパートダウンロードを処理するには?
  3. この問題に対するより良い解決策はありますか?

ご回答ありがとうございます。

4

1 に答える 1

1

解決策 1 : 最善の方法は、サーバーからファイルを直接ダウンロードすることです。これにより、進行状況を監視し、完全に制御し、必要に応じて機能を追加できます。ダウンロードのパフォーマンスはサーバーによって異なります。

解決策 2 : ファイルを保存したくない場合、またはファイルを提供したくない場合は<a href="link_to_the_remote_file">link</a>、リモート サーバーのファイルを指すリンクを提供できます。サーバーにとっては、影響はありません。それは良いことです。それでも、あなたは進歩を見ることができません。

したがって、サーバーがダウンロードを管理するか、リモートサーバーが管理します。どちらにも長所と短所があります。ただし、サーバーの場合は、ファイルを解析する必要があります。モジュールを使用することもできますが、自分で作成する場合 (魔女の方が良い) は、ネイティブfsstreamモジュールとhttp protocol. それ以外の場合は、必要ありません。何もしません。

あなたの解決策は次のとおりです。リモートサーバーは、クライアントにサービスを提供するサーバーにファイルを提供します。 今のところテストしたことはありませんが、ダウンロードアップロードの2つのことをしているようです。ダウンロードまたはアップロードする上記のソリューションを使用することをお勧めします。

于 2014-01-02T19:36:47.173 に答える