Максимальное количество параллельных http-соединений в браузере?

Я создаю несколько приостановленных подключений к 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-мя подключениями. Это правда?

Даже если это правда - есть ли ограничение на количество активных подключений на браузер во всех доменах? Скажем, я использую схему выше - например, 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 ответов

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

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).

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)

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, максимальное количество подключений, которое браузер откроет всего - по всем доменам.

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

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

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

Делая тестирование на странице, я увидел это поведение:

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

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

Смотря на 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-соединения)

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

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

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

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

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

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

  1. Да, домен подстановки будет работать для вас.
  2. Не знает о каких-либо ограничений на соединения. Ограничения, если таковые имеются, будут зависеть от браузера.
Другие вопросы по тегам