この ajax リクエストでオートコンプリートを呼び出しています。
source: function (request, response) {
jQuery.ajax({
url: handlerUrl,
dataType: "json",
data: requestString + "=" + request.term,
success: function (data) {
if (data.length == 0) {
data.push({
id: noResults,
label: noResults
});
}
response(data);
}
});
}
オートコンプリートは、サーバーからのリクエスト後にデータをキャッシュしています。データはキャッシュされますが、提案メニューの作成時に膨大な時間がかかります。4000 個のデータがあり、これらすべてがブラウザーにキャッシュされているとします。IEのネットワークオプションでクロスチェックしました。304
データがキャッシュされていることを意味する結果のタイプが来ていますが、オートコンプリートがこれらの生データ {id,value pair} を提案メニューとして HTML リストに変換するのに時間がかかっています。そして、それには本当に膨大な時間がかかります。
この問題を軽減する方法はありますか? 生データを提案メニューに変換するために、オートコンプリートのこの人口時間を減らすことを意味します。
編集:
search
オートコンプリート、 、response
の3 つのメソッドにブレークポイントを付けましたopen
。2 回目にデータがキャッシュされると、response
メソッドからsearch
メソッドに到達するまでにほとんど時間がかかりません。しかし、その後スタックし、open
非常に長い一時停止の後にメソッドに移動します。