ASP.NET MVC 3 Webアプリケーション(Razor)と、jQuery UI AutoCompleteプラグイン(v1.8)を備えた特定のビューがあります。
これが私が現在持っているセットアップです:
$('#query').autocomplete({
source: function (request, response) {
$.ajax({
url: "/Search/FindLocations",
type: "POST",
dataType: "json",
data: { searchText: request.term },
success: function (data) {
response($.map(data, function (item) {
return { name: item.id, value: item.name, type: item.type }
}))
},
error: function (xmlHttpRequest, textStatus, errorThrown) {
// don't know what i should do here...
}
})
},
select: function (event, ui) {
$.get('/Search/RenderLocation', { id: ui.item.name }, function (data) {
$('#location-info').html(data);
});
},
delay: 300, minLength: 3
});
オートコンプリートは、基本的にGoogleマップのオートコンプリートと同じ世界の場所を返します。
これが私の質問です:
1)delay
との推奨設定は何minLength
ですか?デフォルトのままにしますか?
2) Controllerアクションを実行することを考え[OutputCache]
ましたが、プラグインが自動的にキャッシュを実行するように見えますか?これはどのように作動しますか?結果をCookieに保存しますか?もしそうなら、それはいつ期限切れになりますか?追加のキャッシュが推奨されますか?
3)何かを入力すると、AJAXリクエストが実行されているときに、他の何かを入力すると、ダイアログに最初の結果が一時的に表示され、次に2番目の結果が表示されます。async: false
理由は理解できますが、ユーザーを混乱させます(AJAXリクエストには1〜2秒かかる場合があります)が、複数のリクエストを防ぐためのオプションで使用することを考えてい$.ajax
ます-これは悪いデザイン/ UXですか?
4)パフォーマンス/ユーザビリティを改善するために、上記の設定に他の変更を加えることをお勧めしますか?