Абсолютно: вытяните полный набор данных и отфильтруйте его.Допустим, каждый ваш запрос Ajax занимает 100 мс.Уже сейчас вы можете говорить о введении задержки в 2-3 секунды в ваше приложение, когда с вашим небольшим набором данных он вам действительно не нужен.
Если вы сузите список результатов, " объектно-ориентированный CSS " тоже может быть вашим другом.Подумайте о том, чтобы выразить различные свойства фильтра в виде классов и добавить выбранные пользователем фильтры к их родителям, а затем использовать CSS для отображения или скрытия релевантных результатов.
Например, если все ваши результаты отображаются какLI
s под родителем UL
, <ul class="idaho apartment">
может указывать на то, что пользователь отфильтровал все элементы квартиры Айдахо, в то время как следующий CSS скрыл бы остальные:
.apartment .camp, .apartment ranch ... { display : none; }
.idaho .illinois, .idaho indiana{ display: none; }
При таком подходе у вас есть одинсервер ударил и положился на браузер + JavaScript для обработки всего остального (а так как вы используете логические сравнения - результат либо имеет свойство, либо его нет - он может хорошо работать для вас).В любом случае, даже выбор узлов вручную, когда вы фильтруете, будет более быстрым, чем отправка запроса на фильтр.Кроме того, теперь у вас есть возможность кэшировать этот одиночный запрос к базе данных, что может сэкономить кучу накладных расходов, если вам потребуется выполнять сложные запросы.
Обслуживать полный набор!