Отправить несколько запросов, чтобы получить окончательный ответ или задержать первый запрос? - PullRequest
0 голосов
/ 25 марта 2019

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

В школе учится 120 учеников, и для того, чтобы узнать все имена учеников, требуется 1 минута.

Хорошо ли отправлять запрос каждые 10 секунд, чтобы получить имя 20 учеников?пока мы не получим 120 студентов.или удерживать запрос и ответ через 1 минуту с 120 студентами?

(обратите внимание, что некоторые браузеры и httpClients блокируют запрос по истечении 1 минуты, так что это рискованно) (обратите внимание, что отправка дополнительного запроса может быть обнаружена как атака DOS)

1 Ответ

0 голосов
/ 25 марта 2019

Для подобных вопросов я составляю списки за / против, а затем смотрю на результаты.Зачастую при создании этих списков появляется гораздо лучшее решение.

Нет явных технических преимуществ для обоих.

Будут ли пользователи думать, что служба не работает, и перезагружать страницу, когда запросы занимают минуту?Это действительно создаст DDoS-атаку.

Будут ли пользователи читать все 120 записей?Google просто возвращает несколько, потому что, как показывает опыт, большинство людей читают топ-3.

Почему это занимает так много времени?Неправильные индексы в базе данных?Или вы загружаете слишком много данных?Может быть, достаточно просто узнать имена и отделы студента и год обучения.Или создайте задание, в котором хранится таблица представления, в которой все необходимые данные для вашего запроса объединены в одну таблицу.Таким образом, загрузка данных займет всего несколько мс.

Или, как насчет загрузки 20, отобразите их и дождитесь, когда пользователь прокрутит вниз (ключевые слова «бесконечные скроллеры»).Другой вариант - подкачка страниц (загрузить 20 элементов и показать кнопки «Следующая / Предыдущая»).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...