2017-01-02 13 views
0

私は、アプリケーションがあるときにサーバーからクライアントに転送されるJSONデータの約50mb(圧縮方法によって異なる可能性があります)を必要とするexpressJSアプリケーションを構築しています最初にロードされます。私は、メモリ使用量が多いためにクライアントブラウザをクラッシュさせないように、これを行う方法を見つけるのが難しい。私はソケットを使用しようとしましたが、メモリ使用量をクロムで最大1500MBにまで上げることができますが、これは容認できません(これは完全なデータセットでさえありません)。私はまた、データをクライアント側(私もファンではない)で評価する必要があるまで動作するように見えるハンドルバーレンダリング(app.get上で)の引数としてデータを渡そうとしました。これは文字列として渡す必要があるためです。この時点で、メモリ使用量は再び1500MB +であり、クラッシュを引き起こします。この量のデータをローカルで使用すると、快適な500〜600MBのメモリ使用量で座っています。だから、問題を引き起こさずにこのデータをクライアントに転送する最良の方法は何ですか?ExpressJSサーバーからクライアントへのJSONデータの1回転送

データは、このようなものになりますので、

var worldData = { 
    'x-164z144': { 
     'blocks': { 
       'y1': { 
        'color': 16711680, 
        'owner': 'bar456' 
       }, 
       'y5': { 
        'color': 45654815, 
        'owner': 'foo123' 
      } 
      // possibly more data here in future 
    } 
} 

答えて

0

を、問題を引き起こすことなく、クライアントに[JSONの50メガバイト]を転送するための最良の方法は何ですか?

最善の方法はしないことです。 1回の転送で大量のデータをクライアントに送信しようとすると、問題は常に発生します。実際にクライアントはそのデータをすべて一度に必要としないため、実際には実行する必要はありません。必要なデータだけをロードし、必要以上のデータをロードする必要があります。

あなたはそれがどのような種類のデータであるのか、なぜそれを一度に送信しようとしているのか説明しませんでしたが、最初にそれを行う必要性さえありません。すぐに必要なデータを大量に送信し、必要に応じてさらに多くのデータを要求するだけです。

+0

をので、快適に一度、サーバからクライアントに送信できるデータの最大量は何ですか?私が自分のアプリを構築しようとしていた方法は、すべてのデータを実際に一度に必要とされていましたが、実現できない場合は回避する必要があります。 – dyarbrough

+0

@dyarbroughパフォーマンスの問題は、サイズだけでなくデータの形状、つまり深くネストされた構造とフラットな構造、数値や文字列などのタイプにも依存します。 1つの長い文字列では、非常に深くネストされたオブジェクトはそれほど多くのリソースを必要としません。実際にデータとユースケースでテストする必要があります。私はデータやユースケースについて何も知らないので、何も言い表すことは不可能です。 – rsp

+0

データ構造の元のポストを参照してください。データは非常にシンプルですが、かなり深く入れ子になっています。 XZの位置が最も低い位置にあり、yの位置(高さ)がブロックに関する情報を与えます。私がこれについてもっと学ぶことができる良い資源? – dyarbrough

関連する問題