Ответ
HTTP/1.1 использует последовательную обработку запросов, что приводит к нескольким проблемам:
-
Head-of-line blocking - если один запрос обрабатывается долго, все последующие ждут его завершения, даже если они готовы к выполнению.
-
Ограниченное количество параллельных соединений - браузеры обычно поддерживают только 6-8 одновременных подключений к одному домену.
-
Дублирование заголовков - каждый запрос содержит полный набор заголовков, что увеличивает избыточность.
Пример проблемы:
// Запросы выполняются последовательно
fetch('/resource1'); // Долгий запрос
fetch('/resource2'); // Будет ждать завершения первого
HTTP/2 решил эти проблемы с помощью мультиплексирования, позволяя передавать несколько запросов/ответов параллельно в рамках одного соединения.