9

最大4レベル(ほとんどは1レベルの深さのみ)にネストされた約1500ノードのを使用していjsTreeますが、InternetExplorerの「このスクリプトの実行速度が遅い」というエラーが発生します。html_data <li>ASP.NETによって生成された単純な構造から始めました。ツリーはロードをまったく完了しませんでした。それから私は試しましたxml_data、そしてそれjson_dataは少し良くなりましたが、結局エラーになりました。私の最後の努力は非同期読み込みでした。これで初期ロードの問題は修正されましたが、大きなブランチの1つを展開すると、IEのエラーが発生します。

詳細:checkboxプラグインを使用しています。検索機能も必要です。残念ながら、検索時にユーザーが入力できる文字は1文字程度である可能性があるため、大量の検索結果を表示しています。

誰かがそのような大きなデータセットで同様のことをしたことがありますか?jsTreeを高速化するための提案はありますか?または、GUIの他のオプションを検討する方がよいでしょうか?

コードを投稿していないことは承知していますが、一般的なテクニックや落とし穴は大歓迎です。

4

4 に答える 4

4

問題を完全に解決したわけではありませんが、使用できるようにいくつかの改善を行いました(まだテスト中です)。私はそれが他の人々に役立つかもしれないと思いました:

  • 最初に、jQueryダイアログでjsTreeを使用していましたが、パフォーマンスが低下しているようです。可能であれば、大きなjsTreeとDialogを混在させないでください。
  • 遅延読み込みは、大きな木を使用する方法です。試しjson_dataてみxml_dataましたが、どちらも簡単に実装できました。彼らはほぼ同じように機能しているように見えますが、それは基本的な観察に基づいています。
  • 最後に、貧乏人のページングを実装しました。サーバー側のJSONリクエストハンドラーでは、ノードにXを超える子がある場合、それぞれがそれらの子の一部を持つ多くのノードに単純に分割します。たとえば、ノードXに1000の子がある場合、Xの子ノードX1、X2、X3、...、X10を指定します。ここで、X1には最初の100の子があり、X2には次の100の子があります。ツリー構造を変更しているため、これは一部の人にとっては意味がないかもしれませんが、私にとってはうまくいくと思います。
于 2012-10-17T14:41:02.540 に答える
3

自分のパフォーマンスには少しがっかりしました。

遅延読み込みを試す必要があるようです。ツリー全体を一度に読み込むのではなく、必要な場合にのみ読み込みます。

つまり、最初はツリーのトランクのみをロードし(したがって、すべてのノードが「閉じられ」ます)、次にユーザーがクリックして開くときにのみノードの子をロードします。

JsTreeはこれを行うことができます。ドキュメントを参照してください。

(「非同期読み込み」という意味ですか?)

于 2012-10-03T10:08:31.783 に答える
3

jsTree はすべてのニーズをサポートします

于 2012-10-02T23:00:30.557 に答える