Максимальное количество параллельных http-соединений в браузере? - PullRequest
422 голосов
/ 12 июня 2009

Я создаю несколько приостановленных соединений с HTTP-сервером (комета, обратный ajax и т. Д.). Это работает нормально, но я вижу, что браузер позволяет только два приостановленных подключения к данному домену одновременно. Поэтому, если пользователь просматривает мой веб-сайт в Tab1 своего браузера, а затем пытается загрузить его в Tab2, он использует два разрешенных подключения к моему сайту.

Я думаю, что могу сделать что-то с подстановочным доменом, где мой http-сервер разрешает любой адрес моего сайта, например:

*.example.com/webapp  -> 192.0.2.1 (the actual ip of my server)

так:

a.example.com/webapp
b.example.com/webapp
c.example.com/webapp

все они по-прежнему указывают на (www.example.com/webapp), но браузер рассматривает их как разные домены, поэтому я не ограничиваюсь 2-мя подключениями Это правда?

Даже если это равно true - есть ли ограничение на количество активных соединений на браузер во всех доменах? Скажем, я использую схему выше - например, Firefox допускает только 24 параллельных соединения в любой момент времени? Что-то вроде:

1) a.example.com/webapp
2) www.download.example/hugefile.zip
3) b.example.com/webapp
4) c.example.com/webapp
...
24) x.example.com/webapp
25) // Error - all 24 possible connections currently in use!

Я просто выбрал 24 подключения / Firefox в качестве примера.

Ответы [ 12 ]

386 голосов
/ 12 июня 2009

Макс. Число одновременных постоянных соединений по умолчанию на сервер / прокси-сервер:

Firefox 2:  2
Firefox 3+: 6
Opera 9.26: 4
Opera 12:   6
Safari 3:   4
Safari 5:   6
IE 7:       2
IE 8:       6
IE 10:      8
Chrome:     6

Ограничение для каждого сервера / прокси-сервера, поэтому схема подстановки будет работать.

К вашему сведению: это конкретно связано с HTTP 1.1; другие протоколы имеют отдельные проблемы и ограничения (например, SPDY, TLS, HTTP 2).

187 голосов
/ 08 февраля 2013

HTTP / 1.1

IE 6 and 7:      2
IE 8:            6
IE 9:            6
IE 10:           8
IE 11:           8
Firefox 2:       2
Firefox 3:       6
Firefox 4 to 46: 6
Opera 9.63:      4
Opera 10:        8
Opera 11 and 12: 6
Chrome 1 and 2:  6
Chrome 3:        4
Chrome 4 to 23:  6
Safari 3 and 4:  4

источник: http://p2p.wrox.com/book-professional-website-performance-optimizing-front-end-back-end-705/

HTTP / 2 (SPDY)

Multiplexed support(one single TCP connection for all requests)
92 голосов
/ 06 мая 2015

BrowserVersion | ConnectionsPerHostname | MaxConnections

  1. Chrome34 / 32 6 10
  2. IE9 6 35
  3. IE10 8 17
  4. IE11 13 17
  5. Firefox27 / 26 6 17
  6. Safari7.0.1 6 17
  7. Android4 6 17
  8. ChromeMobile18 6 16
  9. IE Mobile9 6 60

Первое значение ConnectionsPerHostname , а второе значение MaxConnections .

Источник: http://www.browserscope.org/?category=network&v=top

Примечание: ConnectionsPerHostname - максимальное количество одновременных http-запросов, которые браузеры будут отправлять в один и тот же домен. Чтобы увеличить количество одновременных соединений, можно размещать ресурсы (например, изображения) в разных доменах. Тем не менее, вы не можете превысить MaxConnections , максимальное количество соединений, которые браузер откроет всего - по всем доменам.

44 голосов
/ 16 мая 2011

Различные браузеры имеют различные ограничения на максимальное количество соединений на имя хоста; Вы можете найти точные цифры на http://www.browserscope.org/?category=network и вот интересная статья об ограничениях соединения от эксперта по веб-производительности Стива Соудерса http://www.stevesouders.com/blog/2008/03/20/roundup-on-parallel-connections/

14 голосов
/ 27 августа 2010

Firefox сохраняет этот номер в этой настройке (вы найдете его в about:config): network.http.max-connections-per-server

Для максимальных подключений Firefox сохраняет это в этом параметре: network.http.max-connections

8 голосов
/ 27 августа 2010

При тестировании на странице я видел такое поведение:

Safari 4: 6  
Chrome 6: 7  
FF 4: 6

Edit: похоже, что Firefox 4 должен быть в состоянии сделать 15 подключений, но это не то поведение, которое я наблюдал.

5 голосов
/ 12 июня 2009

2 одновременных запроса являются преднамеренной частью дизайна многих браузеров. Существует стандарт, которого «хорошие http-клиенты» придерживаются специально. Проверьте этот RFC , чтобы понять, почему.

4 голосов
/ 12 ноября 2014

Просмотр about:config в Firefox 33 в GNU / Linux (Ubuntu) и поиск connections Я нашел:

network.http.max-подключений: 256

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

network.http.max-persistent-connections-per-proxy: 32

network.http.max-persistent-connections-per-server: 6

пропущены два свойства ...

network.websocket.max-подключений: 200

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

1 голос
/ 30 сентября 2015

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

Клиент - это не браузер, а клиентский компьютер, отправляющий запросы TCP / IP.

Чтобы увидеть эффект очень четко, используйте что-то вроде JMeter для запуска нескольких вызовов веб-службы на хосте вашего сервера - он примет первые два и не примет другой, пока один из двух не будет завершен. Удивительная вещь в том, что для SOA-магазина это очень важно, но вряд ли кто-то действительно знает об этом.

1 голос
/ 08 ноября 2010

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

...