HTTP/3. Что это даст?
Мы привыкли гнаться за скоростью на уровне кода. Оптимизируем запросы, чистим кэш, сжимаем картинки. Но редко кто задумывается, что происходит на уровне того, как данные физически летят по проводам и через воздух. А там сейчас происходит тихая революция. Пришли два стандарта, которые меняют правила игры - это HTTP/3 и WebTransport.
Если коротко. HTTP/3 - это новый транспорт для обычных запросов (загрузка страниц, работа с базой). А WebTransport - это новый способ для работы в реальном времени (чаты, игры, стриминг), который приходит на смену старому WebSocket.
Почему старый интернет тупит
Чтобы понять новое, надо вспомнить старое. В основе всего лежит протокол TCP. Он надежный, как танк. Гарантирует, что все данные дойдут строго по порядку. Но у него есть огромный минус.
Представь, что тебе надо передать 10 пакетов. Если второй пакет где то потерялся в сети, TCP останавливает всё. Он не пропустит третий, четвертый и остальные, пока не получит потерянный второй. Вся очередь встает. Это называется блокировкой начала очереди. Или по простому - пробка. Изза одного пакета тормозит весь сайт.
HTTP/3 на стероидах
HTTP/3 взял и выкинул TCP на помойку. Вместо него используется QUIC, который работает поверх UDP.
Что это дает. Во-первых, нет этой самой пробки. Потоки данных теперь независимы. Если потерялся пакет в одном потоке, остальные летят дальше, не ждут. Во-вторых, соединение устанавливается моментально. В-третьих, если ты переключаешься с Wi-Fi на мобильный интернет, соединение не рвется. IP адрес меняется, а сессия сохраняется.
Для меня это критично. Потому что моя целевая аудитория - это люди со слабым интернетом. В метро, в лифте, где сигнал скачет. HTTP/3 делает так, чтобы сайт в таких условиях не сдыхал, а продолжал работать.
WebTransport. Замена WebSocket
У WebSocket та же проблема. Он тоже работает поверх TCP. Если в чате потерялось одно сообщение, все остальные висят и ждут, пока оно не дойдет.
WebTransport построен на базе HTTP/3 и предлагает два режима.
Первый - Потоки (Streams). Это когда важна каждая буква и строгий порядок. Как при скачивании файла. Всё надежно.
Второй - Дейтаграммы (Datagrams). Это когда важна скорость, а не надежность. Если пакет с голосом или видео потерялся - плевать. Мы не ждем его повторно, мы просто идем дальше. Для видеозвонков или игр это идеально.
И вот что важно. WebTransport позволяет серверу самому инициировать передачу данных. Не только клиент просит, но и сервер может пушить. Для создания чатов и сообществ это просто сказка.
А я буду пробовать
Сейчас у меня в проекте обычный HTTP/2, и мне этого хватает. Текст, картинки, легкие страницы. Но я загорелся идеей прикрутить сюда HTTP/3.
Зачем? Ради эксперимента. И ради тех самых людей в метро. Хочу посмотреть, как это поведет себя на слабом мобильном интернете. Будет ли сайт открываться еще быстрее, когда сеть скачет? Сможет ли он сохранить соединение, если человек зашел в лифт?
Технически это не так просто. Прийдется поднимать QUIC-сервер, возиться с сертификатами, смотреть, как это все подружиться с моим текущим стеком. Но мне интересно. Я папрбую сделать это на выходных. Если получится и не сломает мне весь сайт - оставлю. Если нет - откачусь к стабильной версии. Но это надо обязательно сделать, сегодня интернет трясет.