Вопрос проверяет понимание ключевых преимуществ HTTP/2 и его отличий от HTTP/1.1.
HTTP/2 решает главную проблему HTTP/1.1 — неэффективность множества параллельных запросов. Он использует одно соединение и мультиплексирует несколько потоков данных внутри него, избегая блокировок и экономя задержку. Заголовки сжимаются, статические ресурсы передаются быстрее, а сервер может отправлять данные клиенту заранее (server push). В итоге HTTP/2 уменьшает время загрузки страниц и снижает сетевые накладные расходы.
HTTP/2 создан для ускорения загрузки веб-страниц и решения архитектурных проблем, которые присутствуют в HTTP/1.1.
HTTP/1.1 использует модель:
один запрос — одно соединение
для параллельности — нужно открывать несколько TCP-соединений
проблема head-of-line blocking: если один запрос блокируется, остальные ждут
заголовки передаются без сжатия и повторяются каждый раз
Это делает загрузку страниц медленной, особенно если на странице 100+ ресурсов.
Определение: Multiplexing — передача нескольких запросов и ответов одновременно в рамках одного TCP-соединения.
Преимущества:
нет блокировок
нет необходимости во множественных TCP-соединениях
уменьшение накладных расходов
HTTP/1.1 — текстовый, HTTP/2 — бинарный.
Это обеспечивает:
более компактное представление
простоту парсинга
меньше ошибок
HTTP/2 сжимает заголовки, которые в HTTP/1.1 часто занимают килобайты: cookies, User-Agent, Accept и т.п.
Это уменьшает трафик и ускоряет доставку.
Можно указать, что CSS важнее картинок, а критический JS важнее всего.
Сервер может отправлять клиенту файлы заранее, не дожидаясь запроса. Например:
клиент запросил HTML
сервер "знает", что ему нужен CSS
сервер отправляет CSS сам
Это сокращает задержку первого рендера.
HTTP/1.1 требует много TCP-соединений, HTTP/2 — только одно.
HTTP/1.1 передаёт запросы последовательно, HTTP/2 — параллельно внутри одного соединения.
HTTP/2 сжимает заголовки, HTTP/1.1 — нет.
HTTP/2 бинарный и легче для парсинга.
HTTP/2 поддерживает Server Push, HTTP/1.1 — нет.
HTTP/2 — протокол следующего поколения, который решает узкие места HTTP/1.1, ускоряет доставку ресурсов и уменьшает задержку. Его использование особенно важно для сайтов с большим количеством ресурсов.