Заказ HTTP-звонков из одного браузера - PullRequest
0 голосов
/ 13 мая 2018

Наше приложение отправляет несколько перекрывающихся вызовов AJAX на один сервер. Интересно, есть ли гарантированный заказ на доставку?

Обратите внимание, что в отличие от этого вопроса , я не спрашиваю о сериализации зависимостей в клиенте. Например, клиент отправляет запросы R1, R2, R3 в этом порядке, не ожидая ответа, и я спрашиваю о заказе доставки на сервер (давайте проигнорируем балансировку нагрузки).

Приходит ли запрос в том же порядке

  • по HTTP / 1.1
  • через HTTP / 2?

1 Ответ

0 голосов
/ 14 мая 2018

Насколько я могу судить, спецификация XMLHttpRequest не дает таких гарантий.

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

С HTTP / 1.1, чтобы избежать блокировки заголовка строки, браузеры открывают несколько TCP-подключений к одному источнику . Если R1 и R2 отправляются по разным TCP-соединениям, ничто не может гарантировать их порядок доставки, поскольку любой из них может быть подвержен произвольным сетевым задержкам.

При использовании HTTP / 2 браузеры могут открывать только одно TCP-соединение , то есть запросы будут поступать на сервер в том же порядке, в котором они были отправлены браузером. Таким образом, порядок может содержать де-факто с HTTP / 2. (Очевидно, что даже если это произойдет, только до того момента, когда сервер анализирует эти запросы и начинает их обслуживать. Например, если ваше соединение HTTP / 2 завершается с помощью nginx, он будет отправлять запросы от одного соединения нескольким работникам как как можно скорее. Другими словами, на практике может быть сложно «игнорировать балансировку нагрузки».)

Но, опять же, это рассматривается как проблема с HTTP / 2, и разрабатывается решение в виде QUIC , которое основано на UDP и поэтому теряет повторное упорядочение между мультиплексными соединениями.

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