Где найти правильно делать фильтрацию?
Ссылка скопирована
По вводным: есть сайт с карточками компаний
Их около 3000
По вводным: как правильно сделать фильтрацию? Есть фильтры по типу, цене, рейингу и тд
По вводным: если делать клиенткую фильтрацию, т опридется на сервере грузить все 3к компаний
По вводным: если серверную, то запрос заимает 5 секунд
Нужно решить такую задачу?
Заказать помощь
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Лучший ответ
1
Другие ответы (0)
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопроскомментарий
Вам также может быть интересно
VPN
Как правильно настроить vless для Android TV?
1 ответ
Pyrogram
Как правильно зарегистрировать юзер бота в Telegram?
1 ответ
печатные-платы
Как заставить запускаться программу M3.exe от компании Hanxing AOI в инспекционной машине на Windows 7 Pro?
1 ответ
Искусственный интеллект
Что делать, если OpenRouter ограничивает доступ к моделям?
1 ответ

Для 3000 карточек компаний фильтрацию лучше делать на сервере, а не грузить весь список клиенту. 3000 записей вроде не огромный объём, но если у каждой карточки есть описание, изображения, цены, рейтинги и дополнительные поля, страница быстро станет тяжёлой. Клиентская фильтрация хороша для 100-300 лёгких элементов, но не для нормального каталога.
Правильная схема:
Пример URL:
/companies/?type=service&price=medium&rating=4
На сервере фильтрация делается SQL-запросом или через API вашей CMS. Обязательно нужны индексы по полям, по которым фильтруете чаще всего: тип, город, цена, рейтинг, категория.
AJAX можно оставить для удобства:
const params = new URLSearchParams(new FormData(filterForm)); fetch('/companies/filter?' + params.toString()) .then(r => r.text()) .then(html => { document.querySelector('.cards').innerHTML = html; });const params = new URLSearchParams(new FormData(filterForm)); fetch('/companies/filter?' + params.toString()) .then(r => r.text()) .then(html => { document.querySelector('.cards').innerHTML = html; });
Но важно, чтобы без JavaScript тоже работал обычный переход по URL. Это лучше для SEO, доступности и отладки.
Итог: все 3000 компаний клиенту не отдавать. Делайте серверную фильтрацию, пагинацию, индексы в базе и понятные URL. На фронте можно только улучшить UX: обновлять результаты без перезагрузки, показывать выбранные фильтры и кнопку сброса.