Какие проблемы были с multiplexing в HTTP/1

«Какие проблемы были с multiplexing в HTTP/1» — вопрос из категории Архитектура, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

HTTP/1.1 использует последовательную обработку запросов, что приводит к нескольким проблемам:

  1. Head-of-line blocking - если один запрос обрабатывается долго, все последующие ждут его завершения, даже если они готовы к выполнению.

  2. Ограниченное количество параллельных соединений - браузеры обычно поддерживают только 6-8 одновременных подключений к одному домену.

  3. Дублирование заголовков - каждый запрос содержит полный набор заголовков, что увеличивает избыточность.

Пример проблемы:

// Запросы выполняются последовательно 
fetch('/resource1'); // Долгий запрос
fetch('/resource2'); // Будет ждать завершения первого

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