Где найти правильно делать фильтрацию?

Ссылка скопирована
1 ответ

По вводным: есть сайт с карточками компаний
Их около 3000
По вводным: как правильно сделать фильтрацию? Есть фильтры по типу, цене, рейингу и тд
По вводным: если делать клиенткую фильтрацию, т опридется на сервере грузить все 3к компаний
По вводным: если серверную, то запрос заимает 5 секунд

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Юрий Linux Ответ

Для 3000 карточек компаний фильтрацию лучше делать на сервере, а не грузить весь список клиенту. 3000 записей вроде не огромный объём, но если у каждой карточки есть описание, изображения, цены, рейтинги и дополнительные поля, страница быстро станет тяжёлой. Клиентская фильтрация хороша для 100-300 лёгких элементов, но не для нормального каталога.

Правильная схема:

  • Фильтры отправляются на сервер через GET или AJAX.
  • Сервер возвращает только нужную страницу результатов.
  • URL фильтра можно открыть напрямую и проиндексировать, если это полезно для SEO.
  • Популярные комбинации фильтров можно оформить как посадочные страницы.

Пример URL:

/companies/?type=service&price=medium&rating=4

/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: обновлять результаты без перезагрузки, показывать выбранные фильтры и кнопку сброса.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно