3

I am considering using nodejs to make a non-realtime app. For example, a website like a blog, forum, or image boards.

I have read that nodejs is good when used for asynchronous jobs. So I am wondering what the result would be when used to serve a lot of static files, like big images, css & js files, etc.

Is it true that when sending a file (suppose it's 2-3MB), the whole server will be blocked until the transfer is complete? I have also read that it might be possible to use the OS's sendfile() syscall to do this job. In this case, does Express support this?

4

1 に答える 1

6

いいえ、そうではありません。大きなファイル (2 ~ 3 MB をはるかに超える) をブロックすることなく簡単に送信できます。このようなノード イベント ループのブロックについて不平を言う人は、自分が何をしているのかわからないだけです。

この動作を実現するために必ずしも Express を使用する必要はありません。

そうは言っても、ファイル サーバーが必要な場合は、NodeJS を使用する理由はありません。Apache をディレクトリに向けるだけで、飛ばすことができます。古い忠実な人がうまくいくのに、新しいセクシーなテクノロジーを使用するためだけに車輪を再発明する必要はありません。

ノードを単純な http サーバーとして使用したい場合は、非常に単純なコマンド ライン モジュールをお勧めします。

https://npmjs.org/package/http-server

モジュールのコードは見ていませんが、大きなファイル用に最適化されていない可能性があります。この場合、メモリに簡単にキャッシュされないファイルとして大規模を定義しましょう(これがセットアップにとって何を意味するかに関係なく)。ユース ケースでさらに最適化が必要な場合 (たとえば、「大きな」ファイルをパイプ処理する場合)、独自のモジュールを作成する必要がある場合もありますが、これは非常に迅速に開始でき、必要なときに一般的な開発に使用する優れたユーティリティです。ディレクトリをすばやく提供します。

于 2013-08-09T18:49:33.363 に答える