5

画面に描画するために膨大な量のポイント データを必要とする WebGL アプリケーションに取り組んできました。現在、そのポイントとサーフェスのデータは私が使用している Web サーバーに保存されており、120 MB のすべての JSON がページの読み込み時にブラウザーによってダウンロードされています。私のネットワークではこれに 1 分以上かかりますが、これは最適ではありません。この大きなデータをロードすることについて、経験やヒントを誰かが持っているかどうか疑問に思っていました。できるだけ多くの空白を削除しようとしましたが、ファイルサイズはほとんど減りませんでした.

このファイルを大幅に圧縮する方法、または大量のデータをダウンロードするためのより良い方法はありますか? どんな助けでも素晴らしいでしょう!

4

4 に答える 4

2

JSONは非常に冗長であるため、十分に圧縮され、クライアントで解凍されます。

GzipのJavaScript実装

または、データを1 MBのチャンクにチャンクして、一度に1つずつ送信することもできます。また、ユーザーはおそらく一度に120 MBのデータを操作できないので、ある種の詳細レベルのシステムを実装するのではないでしょうか。

于 2012-08-24T23:43:00.577 に答える
2

データを送信する Web サーバーを制御している場合は、json データの圧縮を有効にしてみてください。

これは、 applicationhost.config(IIS 7)に次を追加することによって行われます。

<system.webServer>
    <urlCompression doDynamicCompression="true" />
    <httpCompression>
      <dynamicTypes>
        <add mimeType="application/json" enabled="true" />
        <add mimeType="application/json; charset=utf-8" enabled="true" />        
      </dynamicTypes>
    </httpCompression>
</system.webServer>

次に、アプリのアプリ プールを再起動する必要があります。

ソース

于 2012-08-24T23:48:44.823 に答える
1

あなたが考えるかもしれないいくつかのこと:

  1. サーバーは送信前にファイルを圧縮していますか?

  2. このデータは頻繁に変更されますか?そうでない場合は、expiresヘッダーを非常に長い時間に設定して、ブラウザーがそれをキャッシュに保持できるようにすることができます。最初のページへのアクセスには役立ちませんが、後続のページへのアクセスでは、ファイルを再度ロードする必要はありません。

  3. jsonファイルに繰り返しのものがたくさんありますか?たとえば、オブジェクトキーが長い場合は、それらを短いキーに置き換えて送信し、ブラウザで再度置き換えることができます。ファイルが圧縮されている場合(項目1を参照)、メリットはそれほど大きくありませんが、ファイルによっては少し役立つ場合があります。

  4. このすべてのデータはブラウザによって一度に消費されますか?そうでない場合は、それを細かく分割して、他の部分がロードされている間に最初の部分の処理を開始することができます。

しかし、最も重要なのは、JSONがこの仕事に適したツールであると確信していますか?汎用の圧縮ツールはこれまでのところしか実行できませんが、データの特定の特性を調べると、より良い結果が得られる可能性があります。使用しているフォーマットの詳細をお知らせいただければ、さらにサポートできる場合があります。

于 2012-08-24T23:44:33.733 に答える
1

私はあなたが持っていたような問題を抱えていたので、文字列の代わりに 2 進数を使用することにしたので、ユーザーがサーバーへのリクエストを作成するときに数字で答えます。

たとえば、ユーザーがレストランのテーブルにいるとしましょう。「ハンバーガー、オレンジ ジュース、水など...」のような文字列を送信する代わりに、数字の 15 を送信してバイナリ 8,4,2,1 に変換できます。 .

ユーザーが複数のことを要求した場合、たとえば 4 つのハンバーガーを追跡するのは難しいため、2 進数で配列の 2 つの数値を追加できます。とても便利で安全だと思いました。

それを行うことにした場合は、開発モードで、バイナリへの変換を展開するときに文字列を使用することをお勧めします。

于 2013-03-09T00:10:39.490 に答える