0

複数の選択ボックス (最大 20 以上) に jQuery MultiSelect プラグインを使用するアプリケーションがあります。アプリケーションはクライアント ブラウザ上で「構築」されており (はい... サーバー上に構築する必要がありますが、それは私の選択ではありません)、各選択ボックスには 15,000 もの動的に読み込まれたオプションを含めることができます (問題がある場合は WebFocus を介して)。 . データが取得されています (jQuery AJAX get 呼び出しを介して)。テストとして、(プラグインを介して) 7400 個のデータポイントを単一の選択ボックスにロードしました。IE8 では、これに 104 秒かかりました。FFでは4秒しかかかりませんでした。

これは典型的なものですか、それとも私が見ていない何かが起こっているのですか???

関連するコードは次のとおりです。

// Get xml data & append to selectbox
    $.ajax({  
        type: "GET",  
        url: "test.xml",  
        dataType: "xml",  
        success: function(xml){  
        $(xml).find('ReportOptions').each(function() {  
            var cNum = $(this).find('cusipnum').text();         // assign vars to incoming data
            $('#cusip').append('<option>'+cNum+'</option>');    // append data to options
        });  
            $('#cusip').multiselect('refresh'); 
    },  
        error: function (xhr, ajaxOptions, thrownError) {
            alert("Error Status:"+xhr.status+", "+thrownError);
         }
    }); 
4

1 に答える 1

1

はい、これは典型的です。これを IE9+ で実行すると、改善が見られるはずです。jquery による大規模なスタイル アプリケーションまたは DOM 操作は、IE8 では非常に遅いことがわかりました。そうは言っても、このコードには改善点があります。

パフォーマンス プロファイルを分析するには、IE8 開発者ツール (F12) を使用してこのコードを分析します。ここでは $('#cusip').append が大きな消費者になるはずです。各ループで「#cusip」の検索をjqueryに強制しています。

于 2012-11-27T00:35:40.923 に答える