Пакетные HTTP-запросы

Кто-нибудь знает стандартный способ пакетных запросов HTTP? Смысл - отправка нескольких HTTP-запросов в один раунд?

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

Спасибо заранее,

Шай

Ответы

Ответ 2

Существует официальный HTTP-способ сделать то, что называется HTTP Pipelining. Но у вас могут быть проблемы со стороной браузера, чем с серверной. Таким образом, вы можете использовать его, если у вас есть высокий уровень контроля только на стороне клиента.

XHR не всегда разрешает пипетировать, и AFAIK вы не контролируете туннелирование HTTP с помощью Javascript. Таким образом, базовая реализация ajax-jQuery не может существовать. Но вы можете найти некоторые продвинутые вещи с Comet и протоколом Bayeux, эмулируя двунаправленные долгосрочные tcp-соединения, где вы, безусловно, уменьшите круговые поездки tcp.

Я не специалист по кометам, но вы можете найти полезную информацию об этой статье Comet и HTTP Pipeling, на мой взгляд, большую часть этого очень экспериментально, но по крайней мере у вас может быть хороший резерв с "классической" кометы, когда HTTP Pipelining недоступен. Возможно, это потребует повторной проверки или нового вопроса.

Ответ 3

Это проблема с REST. Они находятся на уровне сущности. Идея REST состоит в том, чтобы каждый URL уникально идентифицировал ресурс. Конечно, вы можете ввести агрегированный ресурс. Например, www.yoursite.com/customerA?include=Orders,Faults,Incidents Это возвращает XML для CustomerA, а также возвращает ордеры, ошибки, инциденты клиента в виде встроенной коллекции.

Ответ 4

Если использование выделенных "совокупных" ресурсов в качестве fumanchu, упомянутых выше, не работает для вас, вы также можете попробовать, если вы можете перемещать представления менее волатильных ресурсов в кэши, чтобы уменьшить нагрузку на вашу систему. Например: HTML-страницы на "человеческом" веб-сайте часто включают в себя нагрузки и нагрузки изображений, и многие запросы sub не беспокоятся о них.

Ответ 6

Вы создаете пакетные запросы, вызывая new_batch_http_request() в своем объекте службы, который возвращает объект BatchHttpRequest, а затем вызывает add() для каждого запроса, который вы хотите выполнить. Вы можете передать обратный вызов с каждым запросом, который вызывается с ответом на этот запрос. Аргументы функции обратного вызова являются уникальным идентификатором запроса для каждого вызова API, объекта ответа, который содержит ответ вызова API, и объекта исключения, который может быть установлен в исключение, вызванное вызовом API. После добавления запросов вы вызываете execute() для выполнения запросов. Функция execute() блокируется до тех пор, пока не будут вызваны все обратные вызовы.

Литература:

Вы также можете попробовать это https://developers.google.com/api-client

Библиотека/питон/руководство/партии

https://cloud.google.com/storage/docs/json_api/v1/how-tos/batch