Ограничения параллельных HTTP-соединений в браузере

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Типично браузеры поддерживают до 6 одновременных соединений на один домен для HTTP/1.1. Впрочем, используя HTTP/2, который предоставляет возможность мультиплексирования, вы сможете осуществлять множество запросов одновременно через единое соединение.

shell
Скопировать код
# Чтобы обеспечить использование преимуществ HTTP/2 в Nginx, включите его:
server {
  listen 443 ssl http2;
  server_name www.example.com;
}

Переход к HTTP/2 существенно повысит производительность благодаря эффективности обработки множества запросов в пределах одного соединения.

Кинга Идем в IT: пошаговый план для смены профессии

Ограничения соединений в браузерах: важно знать

Лимит в 6 соединений на один домен может быть изменён в зависимости от множества факторов:

Особенности браузеров: дьявол кроется в деталях

  • Firefox 3+, Edge, Chrome, Opera 12, Safari 5: Поддерживают до 6 соединений.
  • Internet Explorer 10: Позволяет 8 соединений.

HTTP/2 и мультиплексирование: нововведения

  • HTTP/2: Способен обрабатывать сколько угодно запросов в рамках одного соединения, что позволяет обходить установленные лимиты.

Домены-заглушки: изворотливый подход

  • Домены-заглушки: Используйте различные субдомены, чтобы выдавать их за разные домены и тем самым увеличить количество одновременных соединений.

Для пользователей Firefox: больше управления

  • Настройки Firefox: С помощью about:config вы можете расширить установленный лимит.

Размещение ресурсов на разных доменах: тактический подход

  • Раcпределение ресурсов по разным доменам способствует увеличению общего количества одновременных соединений.

Визуализация

Смотрите на браузер как на автостраду, имеющую ограниченное число полос для движения:

Markdown
Скопировать код
Автострада браузера 🛣️: | 🚗 | 🚗 | 🚗 | 🚗 | 🚗 | 🚗 |

Каждая машина — это HTTP-соединение.

Markdown
Скопировать код
Максимум соединений:
- Chrome:     | 🚗 | 🚗 | 🚗 | 🚗 | 🚗 | 🚗 |
- Firefox:    | 🚗 | 🚗 | 🚗 | 🚗 | 🚗 | 🚗 |
- Safari:     | 🚗 | 🚗 | 🚗 | 🚗 | 🚗 | 🚗 | 🚗 |
- IE:         | 🚗 | 🚗 | 🚗 | 🚗 | 🚗 | 🚗 |

Как и на дороге, каждая полоса может обрабатывать только одно соединение за раз. Для остальных выстраивается очередь, пока не освободится полоса.

Разширяйте свои возможности: ищите альтернативные решения

Серверы: центр управления

  • Настраивайте Nginx и Apache на работу с HTTP/2, что увеличивает не только эффективность сервера, но и его работоспособность.

Общее представление о лимитах браузеров

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

Познакомиться с историей: предыдущие протоколы

  • Изучите SPDY и TLS. Они уже несовременны, но понимание их работы будет полезно при взаимодействии с устаревшим ПО.

Ресурсы: берите знания с собой

  • Веб-сайты типа Browserscope предлагают информацию о лимитах соединений в браузерах.

Повышение эффективности с HTTP/2: потому что время – это деньги

  • HTTP/2 server push обеспечивает более эффективную загрузку, избавляет от необходимости делать дополнительные DNS-запросы и устанавливать новые соединения.

Полезные материалы

  1. Управление соединениями HTTP/1.x – HTTP | MDN — Подробное руководство об управлении HTTP-соединениями в браузерах.
  2. Fetch Standard — Детальное описание процесса получения ресурсов браузером.
  3. Часто задаваемые вопросы по HTTP/2 — Ответы на все вопросы касательно HTTP/2.
  4. Максимальное количество одновременных HTTP-соединений в браузере – Stack Overflow — Обсуждения и советы экспертов в области разработки браузеров.
  5. Can I use... Support tables for HTML5, CSS3, etc — Информация о поддержке HTTP/2 и других технологий в различных браузерах.
  6. High Performance Browser Networking (O'Reilly) — Обширный источник информации по вопросам производительности сети.
  7. Инструменты разработчика Chrome — Комплект инструментов для изучения сетевой производительности в браузере Chrome.