Максимальное количество одновременных загрузок файлов в браузере?
Два связанных вопроса:
Какое максимальное количество одновременных файлов разрешено открывать веб-странице (например, изображения, файлы CSS и т. Д.)? Я предполагаю, что это значение отличается в разных браузерах (и, возможно, в зависимости от типа файла). Например, я почти уверен, что файлы javascript могут загружаться только по одному за раз (верно?).
Могу ли я использовать javascript для запроса этой информации?
6 ответов
Один интересный способ обойти ограничения X-соединений на сервер - сопоставить статические ресурсы, такие как сценарии и изображения, с их собственными доменами... img.foo.com или js.foo.com.
Я только читал об этом - на самом деле не пробовал и не проверял. Поэтому, пожалуйста, дайте мне знать, если это не сработает.
Для Internet Explorer см. Эту статью MSDN. По сути, если пользователь не отредактировал реестр или не запустил программу "Ускорение интернета", у него будет не более двух соединений при использовании IE7 или более ранней версии. IE8 пытается проявить смекалку и может создать до 6 одновременных подключений, в зависимости от сервера и типа интернет-соединения. В JavaScript в IE8 вы можете запросить свойство window.maxConnectionsPerServer.
Для Firefox значением по умолчанию является 2 для FF2 и более ранних версий и 6 для FF3. Смотрите документацию Mozilla. В любом случае я не знаю, как извлечь это значение из JavaScript в FF.
Большинство HTTP-серверов мало способно ограничить количество подключений с одного хоста, кроме как запретить IP. В общем, это не очень хорошая идея, так как многие пользователи находятся за прокси-сервером или NAT-маршрутизатором, что позволяет нескольким соединениям приходить с одного IP-адреса.
На стороне клиента вы можете искусственно увеличить эту сумму, запрашивая ресурсы из нескольких доменов. Вы можете настроить псевдоним www1, www2 и т. Д., Которые указывают на один и тот же веб-сервер. Затем перепутайте, откуда извлекается статический контент. Это повлечет за собой небольшие накладные расходы в первый раз из-за дополнительного разрешения DNS.
Ограничением обычно является веб-сервер. Обычно веб-сервер допускает только две одновременные загрузки на пользователя.
Активные скриптовые движки, такие как ASP.NET, выполняют только один запрос на пользователя. Запросы статических файлов не обрабатываются обработчиком сценариев, поэтому вы все равно можете получить, например, изображение, получая файл aspx.
Страницы часто имеют контент с разных серверов, например скрипты измерения трафика и тому подобное. Поскольку ограничение на загрузку зависит от сервера, вы обычно можете загружать по два файла одновременно с каждого сервера.
Поскольку это ограничение сервера, вы не можете ничего узнать об этом с помощью javascript.
- Это ограничение сервера и браузера. Общий сетевой этикет гласит, что допускается не более 4 одновременных подключений. На большинстве серверов разрешено не более 2 подключений по умолчанию, и большинство браузеров следуют этому примеру. Большинство из них настраиваемы.
- Нет.
В HTTP нет ничего, что ограничивало бы количество сеансов.
Однако в FF есть элементы конфигурации для одного, которые конкретно определяют, сколько всего сеансов и сколько сеансов на одном сервере разрешено. Другие браузеры также могут иметь эту функцию.
Кроме того, сервер может ограничить количество сеансов, приходящих на один и тот же IP-адрес каждого клиента.
Итак, правильный ответ:
1 / Количество сессий ограничено минимумом, установленным клиентом (браузером) и сервером.
2 / Из-за этого нет надежного способа сделать запрос в JavaScript.
Я знаю, по крайней мере, в Firefox, это значение настраивается (network.http.max-connections
, network.http.max-connections-per-server
, а также network.http.pipelining.maxrequests
), поэтому я сомневаюсь, что вы получите окончательный ответ на этот вопрос. Однако по умолчанию установлено значение 4.
Что вы пытаетесь достичь?