Задать вопрос

Как избавиться от зависимых запросов?

Одностраничное приложение.
Обрабатываем переход по адресу: site.ru/spb/museums/best

1. Получаем объект города api.site.ru?city=spb, берем из него cityId: 123
2. Получаем объект категории api.site.ru?categories=museums, берем из него categoriesId: 456
3. Получаем список лучших музеев Питера api.site.ru/museums?city=123&categories=456&type=best

В итоге имеем парочку транзитных запросов, которые усложняют код фронтэнда и замедляют ответ.

С одной стороны, можно получать сразу при загрузке список всех городов, категорий и проч., но если списки будут большими, то это может затормозить первую загрузку.

Можно хранить урезанные списки соответствий url — id, что отсрочит первую проблему, но усложнит бэкенд и фронтенд.

Можно придумать какую-нибудь штуку на фронтенде, которая будет в фоне подгружать списки городов и категорий и откладывать выполнение задач, которым требуются данные из них, если они еще не загружены. Это сильно усложнит фронтенд.

Можно переделать бэкенд, чтобы он понимал запросы вида api.site.ru/museums?city=spb&categories=museums&type=best, но тогда придется постоянно делать запросы по нескольким таблицам и возрастет нагрузка на сервер, чего очень не хочется.

Какие еще есть варианты? Как сделать правильно? Как подобные проблемы решаются в fullstack-фреймворках
  • Вопрос задан
  • 3256 просмотров
Подписаться 5 Оценить Комментировать
Ответ пользователя Damir Makhmutov К ответам на вопрос (5)
Если данные редко меняются, то дёргайте всё одним запросом и кешируйте.
Ответ написан
Комментировать