Подтвердить что ты не робот

Очень большой HTTP-запрос и многие небольшие запросы

Мне нужен 2D-массив (как Json) для отправки с сервера на клиент. Он будет размером около 400x400 с каждой записью около 4 символов текста. Таким образом, это составляет около 640 КБ данных.

Какой из следующих экстремальных подходов лучше?

  • Я делаю большой HTTP-запрос всех данных за один раз.
  • Я делаю 400 запросов - каждый из них запрашивает одну строку (около 1,6 КБ)

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

Спасибо.

4b9b3361

Ответ 1

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

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

Ответ 2

Несколько соображений для выбора одного большого и нескольких маленьких:

  • В случае с одним запросом вы не можете выполнять прогрессивную обработку данных по мере поступления данных; вам нужно дождаться прибытия всего пакета, прежде чем вы сможете что-либо сделать. Если это не удается, вам нужно начать все с нуля.
  • В случае с несколькими запросами вы можете выполнять прогрессивную обработку данных. Однако теперь вам нужно рассмотреть возможность множественных сбоев и способы их восстановления.
  • Несколько запросов требуют накладных расходов для каждого запроса. Это дополнительная пропускная способность, которую приложение будет потреблять.
  • Некоторые агенты HTTP ограничивают количество одновременных запросов на том же сервере, и вам может понадобиться сделать некоторую логику, чтобы обойти это.
  • Сжатие отклика будет работать лучше для случая с одним запросом.
  • Несколько запросов не требуют выделения полной памяти для ваших данных. Конечно, 640 КБ - это не большой кусок памяти, так что это может не быть большим для вас, в зависимости от того, как часто вы его выделяете.
  • В случае раннего завершения процесса (либо кнопка "Отмена", либо приложение завершается или браузер переходит от вашей страницы), единственный запрос будет по-прежнему завершать полную загрузку ответа; однако для случая с несколькими запросами любой запрос, который ваш код еще не запущен, не будет выполнен.

Честно говоря, я бы не беспокоился о последних двух и основывал свой выбор на 1) важна прогрессивная обработка данных; и 2) то, что ваш допуск приложения для сбоев и частичных данных.