Мобильный: один запрос или несколько небольших запросов? - PullRequest
7 голосов
/ 01 июля 2011

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

Пример

Я хочу загрузить список элементов в узле.У меня есть идентификатор узла.2 способа получения этих элементов следующие:

  • отправить один запрос с идентификатором узла и получить всю информацию о n первых элементах в узле в одном ответе;
  • отправьте первый запрос с идентификатором узла, чтобы получить идентификаторы n первых элементов в узле, а затем для каждого отправьте другой запрос, чтобы получить один ответ на элемент.

I'm

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

Каково ваше мнение?

Ответы [ 5 ]

5 голосов
/ 01 июля 2011

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

1 голос
/ 01 июля 2011

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

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

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

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

1 голос
/ 01 июля 2011

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

0 голосов
/ 01 июля 2011

Иногда ситуацию стоит использовать только для единичных запросов, скажем, к определенной категории.Допустим, у вас есть приложение для твиттера, а твиты разделены на категории.Кто-то, кто имеет приложение, но заботится только о спорте, может взглянуть только на раздел «Спорт», который может быть одним вызовом AJAX.Другой пользователь может быть вставлен только в две категории из 15.Это означает, что пользователю не нужно загружать ненужные данные.Важно определить следующее:

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

0 голосов
/ 01 июля 2011

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

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

...