2010-08-27 7 views
1

Я использую Google как окно поиска в моем приложении asp.net. Каждое нажатие клавиши в поле отправляет запрос Ajax на веб-метод IIS, который запрашивает txt и возвращает совпадения - работает довольно круто. Тем не менее, при загрузке активности (например, 300 пользователей), я получаю ошибки, связанные с моими 100 соединенными соединениями. Теперь я переосмысливаю, что, возможно, открытие/закрытие соединения db на каждом нажатии клавиши может быть слишком большим. Как бы кто-то архитектовал это по-другому или застраховал бы, чтобы соединения были исправлены очень быстро. У меня есть «использующая» конструкция для соединений, чтобы гарантировать, что она закрыта. Вызывает озабоченность GC, возможно, недостаточно быстро их исправляет?Ajax-запрос на SQL-сервер открывает слишком много объединенных подключений

Как бы Google обрабатывал такой большой цикл открытия/закрытия.

ответ

0

Memecache те запросы нажатия клавиш/ответы БД и избегают поездки в БД каждый раз после первого.

Или сгенерируйте предварительно скомпилированный список возможных фраз автозаполнения, кеш-память и запрос, а не БД. Зачем вам запрашивать БД для окна поиска? Создайте приемлемый список и используйте это вместо создания межуровневого соединения!

Или убедитесь, что есть индексы на таблицах, которые делает ваш запрос к БД.

0

Возможно, вы уже это сделали, но также в ваших интересах требовать минимальное количество символов до того, как «автозаполнение» начнется, а также всегда будет извлекать верхний (x) элементов.