advanced
HTTP versions
Сравнивайте HTTP/1.1 connection reuse и head-of-line behavior с HTTP/2 multiplexing и HTTP/3 over QUIC.
HTTP/1.1 переиспользует TCP (keep-alive), но страдает от head-of-line blocking: один медленный ответ блокирует остальные на том же соединении. HTTP/2 мультиплексирует потоки на одном TCP с бинарным фреймингом и HPACK. HTTP/3 использует QUIC поверх UDP — восстановление потерь по потокам снижает блокировку между запросами.
| Версия | Транспорт | Мультиплексирование | Head-of-line | |--------|-----------|---------------------|--------------| | HTTP/1.1 | TCP | Последовательно на соединении | На соединении | | HTTP/2 | TCP | Да, общий TCP | На уровне TCP возможен | | HTTP/3 | QUIC/UDP | Да | В основном на поток |
Встроенный `http` в Node — HTTP/1.1; HTTP/2 — `node:http2`. Reverse proxy часто принимает HTTP/2 или HTTP/3 от клиентов и говорит HTTP/1.1 или HTTP/2 с upstream.
На интервью: когда HTTP/2 помогает latency API; почему TLS фактически обязателен для HTTP/2 в браузерах; последствия для load balancers.
Типовые ошибки: HTTP/2 без настройки лимитов соединений; мультиплексирование ≠ нулевая latency; отладка curl по умолчанию без HTTP/2.
Компромисс — между простотой, производительностью, безопасностью и эксплуатацией: назовите, что оптимизировали и какую цену приняли.
Чеклист:
- Сравните reuse в 1.1 и multiplexing в 2/3.
- Где termination в вашем стеке.
- Границы модулей Node для HTTP/2.
- Тестируйте клиентским протоколом.