Очень большой Запрос HTTP по сравнению со многими маленькими запросами

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

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

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

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

Спасибо.

40
задан xav 20 April 2014 в 16:44
поделиться

2 ответа

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

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

50
ответ дан 27 November 2019 в 01:09
поделиться

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

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

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

67
ответ дан 27 November 2019 в 01:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: