У меня есть веб-приложение ASP.NET MVC 3 (Razor) и определенный View с плагином 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) Я думал о включении [OutputCache]
в действие контроллера, но я смотрю, как будто плагин автоматически выполняет кэширование?Как это работает?Сохраняет ли он результаты в куки?Если так, когда это истекает?Рекомендуется ли дополнительное кэширование?
3) Я заметил, что если я что-то печатаю, и хотя AJAX-запрос запускается, если я что-то печатаю, в диалоговом окне отображается первый результат.на мгновение второй результат.Я могу понять почему, но это сбивает с толку пользователя (учитывая, что запрос AJAX может занять 1-2 секунды), но я думаю об использовании async: false
в опциях $.ajax
для предотвращения множественных запросов - это плохой дизайн / UX?
4) Можете ли вы порекомендовать какие-либо другие изменения в моих вышеуказанных настройках для улучшения производительности / удобства использования?