Проверяет понимание эволюции протокола HTTP и ключевых различий между версиями, что важно для оптимизации сетевого взаимодействия и отладки производительности.
HTTP прошёл несколько крупных эволюционных этапов, каждый из которых решал узкие места предыдущего. Понимание этих различий помогает выбирать правильные стратегии оптимизации: от объединения ресурсов до настройки CDN и серверов.
В HTTP/1.0 каждое соединение обслуживало один запрос. HTTP/1.1 ввёл keep-alive, конвейеризацию (pipelining) и chunked transfer encoding. Однако конвейеризация на практике почти не использовалась из-за head-of-line blocking: ответы должны возвращаться строго в порядке запросов.
HTTP/2 остаётся поверх TCP, но меняет формат и логику передачи. Появляется бинарный фрейминг, мультиплексирование потоков в одном соединении, сжатие заголовков HPACK и server push.
// Псевдо-пример: один TCP-сокет, много потоков
stream 1 -> GET /index.html
stream 3 -> GET /style.css
stream 5 -> GET /app.js
// все идут параллельно в одном соединенииПроблема остаётся на уровне TCP: потеря одного пакета блокирует все потоки, так как TCP гарантирует порядок доставки.
HTTP/3 заменяет TCP на QUIC — протокол поверх UDP со встроенным TLS 1.3, мультиплексированием и восстановлением потерь на уровне потоков. Потеря пакета в одном потоке не блокирует остальные. Установка соединения быстрее: 0-RTT или 1-RTT вместо нескольких round-trip.
HTTP/2 включают на большинстве современных серверов (nginx, CDN) — это уже стандарт. HTTP/3 полезен для мобильных сетей и нестабильных каналов, где потери пакетов часты. Для отладки важно понимать, что в DevTools вкладка Protocol покажет используемую версию.
Итог: HTTP/1.1 — легаси, HTTP/2 — базовый стандарт для большинства сайтов, HTTP/3 — выбор для мобильных и высоконагруженных сервисов, где важны задержки и устойчивость к потерям.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию