0

Kendo UI テンプレートを使用して大量の HTML を生成し、DOM に挿入するページがあります。私たちは200万バイト以上を話しています。他のすべてのブラウザでは、約 2 ~ 3 秒でこれが表示されます。私はすでにjQueryを避け、document.getByElementId呼び出しを介してinnerHTMLを設定しています。最も遅い部分は、IE が行う regexp.test 呼び出しのようです。IE はすべての開始/終了タグが一致することを確認していますか? もしそうなら、速度を上げるためにこのチェックをスキップするように IE に指示する方法はありますか (つまり、「信頼してください」)。必要な HTML はすでに可能な限り小さくしているので、それはもはやオプションではありません。また、私が示しているデータはまだ最大のデータセットではないので、さらに大きくなることがわかっています。誰にもアイデアはありますか?

アップデート:

これは私が使用している現在のコードです:

 var resultHtml = kendo.template(templateHtml, { useWithBlock: false })(currentPage.ViewModel);
 resultHtml = resultHtml.replace(new RegExp("\>[\n\t ]+\<", "g"), "><"); // Get rid of whitespace
 document.getElementById("tblData").innerHTML = resultHtml;

IE では、生成される 250 万文字を表示するのに約 10 秒かかります。Chrome/FireFox/Opera では、これには約 2 ~ 3 秒かかります。

4

2 に答える 2

1

「ダブルバッファリング」のようなものを実装します。

DOM の一部ではないノードを作成します。

var offlineNode = $('<div />');

コンテンツをオフラインノードにレンダリングします。

offline.html(kendoTemplate(billionData));    

完了したら、ノード全体を DOM に移動します。

offlineNode.appendTo($('#a-place-in-dom'));

IE は、いつページを再レンダリングするかを推測するのに問題があるため、DOM 操作には適しています。大規模な DOM 変更を行うたびに、IE は遅くなります。

于 2013-09-19T15:24:22.450 に答える
0

問題は、HTML が現在 DOM に追加されていることではないようです。これは、Kendo MVVM と双方向バインドする必要があるすべてのオブジェクトに関係しています。ごめんなさい!

于 2013-09-19T15:45:47.720 に答える