Node.js/Express RESTful APIから非常に大きなオブジェクトをJSON文字列に変換する必要がある場合があります。Node.js/ExpressでのJSON.stringify出力のストリーミング/パイプ
res.end(JSON.stringify(obj));
しかし、これはうまくスケールされていません。具体的には、1-2台のクライアントを接続している私のテストマシンではうまくいきますが、多くのクライアントが同時に大規模なJSONオブジェクトを要求しているときに、この操作によってCPU使用率がになっている可能性があります。
私は非同期JSONライブラリを探し回っていますが、the only one I foundに問題があるようです(具体的には、[RangeError]が表示されます)。それだけでなく、1つの大きなチャンクに文字列を返します(たとえば、コールバックは文字列全体で1回呼び出されます。つまり、メモリのフットプリントは減少しません)。
JSON.stringify関数の完全非同期パイプ/ストリーミングバージョンです。ストリームに直接パックされたデータを書き込むようにしています。同期的にCPUを消費します。
ストリームを作成し、オブジェクトをストリングとしてストリームに書き込み、最後にストリームをパイプします。 res。 – wayne