2009-06-30 1 views
2

Как вы используете YouTube, facebook и даже Stackoverflow, добиваясь отличной производительности с помощью своих автокомплектов? Это очень быстро и похоже на локальный поиск, хотя на заднем плане они, вероятно, называют БД. (Представьте себе все ресурсы, необходимые для вызова БД!)Стратегии автоматического заполнения текстового поля с помощью ajax

ВСЕ О сервере и пропускной способности?

Каковы стратегии максимизации производительности с помощью этой техники? Поиск андерсеров, таких как
1) Запустите обратный вызов ajax после того, как пользователь напечатает не менее трех букв
2) Результаты кэширования базы данных? если да, то как?
3) данные предварительной загрузки? если да, то как
4) и т.д ...

Если это имеет значение им с помощью ASP.NET MVC с SQL Server 2008.

ответ

1

Try и использовать Firebug, чтобы увидеть, что происходит с Google обратных вызовов, это впечатляет и пояснительная ,

0

Используйте его только для запросов, которые вы можете кэшировать (найдите технологию кэширования баз данных, которую вы можете использовать для вашего сервера, язык/архитектура и DB (например, memcached) ... не имеют никакого опыта работы с технологиями MS) и которые бывают быстрыми (например, при поиске статьи поиск только заголовка вместо всего текста ... вот для чего нужны расширенные поиски). Если возможно, вы также должны оптимизировать свою БД для этих вызовов (индексирование). Ограничьте результаты курса (я предполагаю, что время передачи всех данных (запрос ответа) занимает больше времени, чем сам запрос БД).

2

Некоторые запросы естественно ускоряются (и могут использовать кеширование на стороне клиента). Это относится к любым запросам, где по мере роста «ключевого слова» результаты всегда являются подмножеством предыдущих результатов.

например. Допустим, вы ищете контакт по электронной почте ... (от 8000 контактов)

Typed | Results | Search | Cached? 
    "j" | 2,500 | server | server 
    "je" | 847 | server | server (+ client?) 
    "jef" | 192 | server | server + client 
    "jeff"|  23 | client | client 

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