Проверяет понимание различий между версиями HTTP и их влияния на производительность веб-приложений.
HTTP — это протокол прикладного уровня, который определяет, как браузер и сервер обмениваются данными. Каждая новая версия решает проблемы предыдущей, улучшая скорость и надёжность.
Работает поверх TCP. Каждый запрос требует отдельного соединения, что приводит к задержкам. Для ускорения используют keep-alive, но даже с ним запросы выполняются последовательно, и один медленный ответ блокирует остальные (head-of-line blocking).
Вводит мультиплексирование: несколько запросов и ответов передаются одновременно по одному TCP-соединению. Заголовки сжимаются (HPACK), сервер может отправлять ресурсы заранее (server push). Однако TCP остаётся узким местом: потеря пакета останавливает все потоки.
Использует QUIC вместо TCP. QUIC работает поверх UDP, обеспечивая шифрование по умолчанию, более быстрое установление соединения (0-RTT) и независимость потоков — потеря одного пакета не блокирует другие. Это особенно полезно для мобильных сетей и нестабильных соединений.
// HTTP/1.1: последовательные запросы
fetch('/api/user').then(r => r.json()).then(user => {
fetch('/api/posts').then(r => r.json()).then(posts => {
console.log(user, posts);
});
});
// HTTP/2: параллельные запросы по одному соединению
Promise.all([
fetch('/api/user').then(r => r.json()),
fetch('/api/posts').then(r => r.json())
]).then(([user, posts]) => console.log(user, posts));В реальности браузер сам управляет версией протокола, но разработчику важно понимать, что HTTP/2 и HTTP/3 требуют HTTPS и поддержки сервера.
HTTP/3 — лучший выбор для современных высоконагруженных приложений, особенно с мобильным трафиком. Если сервер не поддерживает QUIC, HTTP/2 всё равно значительно быстрее HTTP/1.1. Для простых сайтов HTTP/1.1 может быть достаточен, но для API и медиа лучше использовать HTTP/2 или HTTP/3.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию