Сколько одновременных запросов AJAX (XmlHttpRequest) разрешено в популярных браузерах?

В Firefox 3 ответ 6 на домен: как только 7-й XmlHttpRequest (на любой вкладке) в тот же домен уволен, он ставится в очередь, пока один из остальных 6 не закончит.

Каковы числа других основных браузеров?

Кроме того, существуют ли способы ограничения этих ограничений, если мои пользователи не изменяют настройки браузера? Например, существуют ли ограничения на количество запросов jsonp (которые используют инъекцию тега скрипта, а не объект XmlHttpRequest)?

Справочная информация. Мои пользователи могут сделать XmlHttpRequests с веб-страницы на сервере, попросив сервер выполнить команды ssh на удаленных хостах. Если удаленные хосты опущены, команда ssh занимает несколько минут, чтобы не допустить, в результате чего мои пользователи не смогут выполнять какие-либо дополнительные команды.

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

IE6, IE7 – имеют предел в два. IE8 – 6, если у вас широкополосная связь – 2 (если это набор).

Результаты сети в Browserscope предоставят вам как соединения для имени хоста, так и максимальные соединения для популярных браузеров. Данные собираются путем запуска тестов на пользователя «в дикой природе», поэтому он будет оставаться в курсе последних событий.

С IE6 / IE7 можно настроить количество одновременных запросов в реестре. Вот как установить его по четыре.

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings] "MaxConnectionsPerServer"=dword:00000004 "MaxConnectionsPer1_0Server"=dword:00000004 

Я только что проверил с http://www.browserscope.org, а с IE9 и Chrome 24 вы можете иметь 6 одновременных подключений к одному домену и до 17 к нескольким.

Согласно IE 9 – Что изменилось? в блоге HttpWatch IE9 по-прежнему имеет ограничение на 2 соединения при использовании VPN.

Использование производительности VPN Ever Clobbers IE 9

Ранее мы сообщали о сокращении максимального количества одновременных подключений в IE 8, когда ваш компьютер использует VPN-соединение. Это произошло, даже если трафик браузера не прошел через это соединение.

К сожалению, IE 9 зависит от VPN-соединений таким же образом:

Я написал один тестер AJAX. Наслаждайся этим!!! Просто потому, что у меня были проблемы с моим хостинг-провайдером

      
concurrent json requests
 
Elapsed Time:
в
concurrent json requests
 
Elapsed Time:

Редактировать:
r означает время ожидания строки и w.
Когда вы сначала нажимаете кнопку запуска 80 (или любой другой номер) параллельного запроса ajax, запускаются javascript, но, как известно, они буферизуются браузером. Также они запрашиваются на сервере параллельно (ограниченным определенным числом, это факт этого вопроса). Здесь запросы решаются на стороне сервера со случайной задержкой (устанавливается w). В момент запуска вычисляется все время, необходимое для решения всех вызовов ajax. Когда тест закончен, вы можете увидеть, заняло ли оно половину, заняло третье место, заняло четверть и т. Д. Всего времени, вычитая, какой был параллелизм при звонках на сервер. Это не является строгим или точным, но приятно видеть в реальном времени, как завершаются вызовы ajaxs (видя входящий крест). И это очень простой автономный сценарий, чтобы показать основы ajax.
Конечно, это предполагает, что серверная сторона не вводит никаких дополнительных ограничений.
Предпочтительно использовать в сочетании с сетевой панелью Firebug (или эквивалентом вашего браузера)

Написал мой собственный тест. проверял код на stackoverflow, отлично работает, говорит, что chrome / FF может делать 6

 var change = 0; var simultanius = 0; var que = 20; // number of tests Array(que).join(0).split(0).forEach(function(a,i){ var xhr = new XMLHttpRequest; xhr.open("GET", "/?"+i); // cacheBust xhr.onreadystatechange = function() { if(xhr.readyState == 2){ change++; simultanius = Math.max(simultanius, change); } if(xhr.readyState == 4){ change--; que--; if(!que){ console.log(simultanius); } } }; xhr.send(); }); 

он работает для большинства веб-сайтов, которые могут запускать событие изменения readystate в разное время. (ака: промывка)

Я заметил на моем сервере node.js, что мне пришлось выпустить не менее 1025 байт, чтобы вызвать событие / флеш. иначе события просто вызовут все три состояния сразу, когда запрос будет завершен, так что вот мой бэкэнд:

 var app = require('express')(); app.get("/", function(req,res) { res.write(Array(1025).join("a")); setTimeout(function() { res.end("a"); },500); }); app.listen(80); 

Обновить

Я замечаю, что теперь у вас может быть запрос до 2x, если вы одновременно используете xhr и fetch api

 var change = 0; var simultanius = 0; var que = 30; // number of tests Array(que).join(0).split(0).forEach(function(a,i){ fetch("/?b"+i).then(r => { change++; simultanius = Math.max(simultanius, change); return r.text() }).then(r => { change--; que--; if(!que){ console.log(simultanius); } }); }); Array(que).join(0).split(0).forEach(function(a,i){ var xhr = new XMLHttpRequest; xhr.open("GET", "/?a"+i); // cacheBust xhr.onreadystatechange = function() { if(xhr.readyState == 2){ change++; simultanius = Math.max(simultanius, change); } if(xhr.readyState == 4){ change--; que--; if(!que){ document.body.innerHTML = simultanius; } } }; xhr.send(); }); 

Я считаю, что существует максимальное количество одновременных HTTP-запросов, которые браузеры будут делать в том же домене, который находится в порядке 4-8 запросов в зависимости от настроек пользователя и браузера.

Вы можете настроить свои запросы для перехода в разные домены, что может быть или не быть выполнимо. Ребята из Yahoo провели много исследований в этой области, о которых вы можете прочитать ( здесь ). Помните, что каждый добавленный новый домен также требует поиска DNS. Ребята из YSlow рекомендуют от 2 до 4 доменов для достижения хорошего компромисса между параллельными запросами и поисками DNS, хотя это касается времени загрузки страницы, а не последующих запросов AJAX.

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

  • Что делает «дружественный URL»?
  • Как работает «304 Not Modified»?
  • Как отключить окно «Оповещение безопасности» в элементе управления Webbrowser
  • Как настроить настройки прокси-сервера для эмулятора Android?
  • Получить URL-адрес от браузера до приложения C #
  • Как подавить ошибки скрипта при использовании элемента управления WPF WebBrowser?
  • Почему Internet Explorer 11 не соблюдает условные комментарии даже при эмуляции режима документа Internet Explorer 8?
  • Программирование на Android: с чего начать создавать простой браузер файлов?
  • Как подписать апплет Java для использования в браузере?
  • Должны ли мы больше использовать нестандартные / браузерные префиксы поставщика CSS?
  • В чем разница между «Normal Reload», «Hard Reload» и «Empty Cache and Hard Reload» в Chrome?
  • Interesting Posts

    Как я могу получить нумерацию страниц Word для начала на третьей странице, чтобы она отображалась в TOC как страница 1

    Spring Boot War развернут в Tomcat

    Как управлять несколькими устройствами воспроизведения звука в Windows Vista / 7?

    Разделите число на свои цифры с помощью Haskell

    Как проверить диалог подтверждения с Cucumber?

    Услуги Non-Singleton в AngularJS

    Возможно ли запускать 64-битные приложения в 32-разрядной операционной системе, если аппаратное обеспечение составляет 64 бит?

    Наблюдение за подростками / кейлоггинг на машине

    Планирование эффективности досрочно и преждевременная оптимизация

    Как удалить недопустимые символы из путей и имен файлов?

    android.app.Application не может быть создан из-за NullPointerException

    Eclipse CDT: неразрешенное включение заголовка stl

    разница между @id и @android: id

    System.Timers.Timer / Threading.Timer vs Thread with WhileLoop + Thread.Sleep для периодических задач

    Как заблокировать изображения из определенного домена?

    Давайте будем гением компьютера.