Максимальное количество параллельных 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
- Chrome34 / 32 6 10
- IE9 6 35
- IE10 8 17
- IE11 13 17
- Firefox27 / 26 6 17
- Safari7.0.1 6 17
- Android4 6 17
- ChromeMobile18 6 16
- 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-магазина это очень важно, но вряд ли кто-то знает об этом.
На этот вопрос нет однозначного ответа, так как каждый браузер имеет свою собственную конфигурацию, и эта конфигурация может быть изменена. Если вы выполняете поиск в Интернете, вы можете найти способы изменить это ограничение (обычно они обозначаются как "методы повышения производительности"). Возможно, стоит порекомендовать своим пользователям сделать это, если этого требует ваш веб-сайт.
- Да, домен подстановки будет работать для вас.
- Не знает о каких-либо ограничений на соединения. Ограничения, если таковые имеются, будут зависеть от браузера.