2

現在、8000〜32000ポイント(4行* 8000ポイント)の近くでプロットする必要があります。JSONリクエストを介してデータを取得していますが、実際にはデータが1秒以内に返されます。ただし、$。plotポイントに到達すると、IE8がフリーズし、その数のポイントをロードするのに永遠に時間がかかります。これが私のコードです:

var data = [];

        function onDataReceived(seriesData) {
            var p = $.plot(placeholder, seriesData.seriesData, options);
        }
        $.ajax({
            url: '/Charts/LineChart?DataTypesToGraph=' + dataTypes + '&DatePull=' + chartDate + '&AssetID=' + $('#AssetID').val(),
            method: 'GET',
            async: true,
            cache: true,
            dataType: 'json',
            success: onDataReceived
        });

$ .plotを高速化して、読み込みを大幅に高速化するにはどうすればよいですか。また、IE8がフリーズしないようにする方法はありますか?

本当にありがとう!

4

1 に答える 1

4

Flotは(まだ)インクリメンタル描画をサポートしていないため、「フリーズ」が表示されます。ブラウザに制御を戻す前に、プロット全体をレンダリングします。コードをハッキングする以外にそれを回避する方法はありませんが、支援するためにできることが2つあります。

  1. おそらくExcanvasを使用しています。Flashcanvasに切り替えてみてください。私の経験では、Flotでも同様に機能し、劇的に優れたパフォーマンスを提供します。「プロ」バージョンのライセンスに必要な31ドルは、ほとんどの予算を超えることはありません。

  2. 1行あたり8000ポイントあり、ほとんどのディスプレイは幅1920ピクセルで最大になり、平均は1280に近くなります。ズームやパンを使用せずにライン全体を表示する場合は、4〜6をレンダリングします。画面に実際に表示されるデータの2倍のデータ。ポイント数を2kに減らすためのサーバー側のフィルタリング/集約によっては、パフォーマンスが劇的に向上します。

ただし、何をしても、大規模なデータセットを使用したIE8で優れたパフォーマンスが得られることはありません。これはほぼ4年前のブラウザであり、JavaScriptのパフォーマンス戦争の前にリリースされ、エミュレートされたキャンバスを使用しています。あなたはそんなに多くをすることができるだけです。

于 2012-09-26T18:09:52.763 に答える