Forwarded from Записки админа
🆖 Камрад поигрался с HTTP/3 и решил поделиться результатами со всеми. Implementing HTTP3 QUIC Nginx.
#фидбечат #nginx #http3
#фидбечат #nginx #http3
Forwarded from Записки админа
🆖 Реализация QUIC от Nginx - Introducing a Technology Preview of NGINX Support for QUIC and HTTP/3. #nginx #quic #http3
Forwarded from Записки админа
📝 HTTP/3 Deep Dive - собственно, статья про HTTP/3, с картинками и дополнительными полезными ссылками. #http3 #напочитать
Forwarded from Записки админа
🛠 И вот ещё небольшое чтиво под утренний кофеёк - Evolution of HTTP - коротко о том, как эволюционировал HTTP, от версии 0.9 до современного HTTP/3. #http3 #напочитать
🔥9
Forwarded from Записки админа
О приоретизации загрузки ресурсов в HTTP в принципе, и в HTTP/3 в частности...
https://calendar.perfplanet.com/2022/http-3-prioritization-demystified/
#http3 #web #напочитать
https://calendar.perfplanet.com/2022/http-3-prioritization-demystified/
#http3 #web #напочитать
👍3
Forwarded from Мишка на сервере (Mikhail Savin)
Почему 1 КБ может замедлить загрузку сайта?
Привет,
Когда браузер подключается к серверу, они сначала делают "рукопожатие" (TCP Handshake) — обмениваются тремя пакетами (SYN, SYN-ACK, ACK), что занимает один RTT (Round Trip Time — время туда и обратно). Только после этого начинается передача данных, но и тут TCP не торопится.
Вот в чем фишка: TCP начинает с маленького окна перегрузки (Congestion Window), обычно равного 10 MSS (Maximum Segment Size). MSS — это максимальный размер полезных данных в одном TCP-сегменте, обычно около 1460 байт. Умножаем 1460 байт на 10 MSS и получаем примерно 14 600 байт — наши магические 14 КБ!
Что это означает на практике?
- Если твой HTML весит 14 КБ — он полностью влезает в начальное окно и прилетает за один RTT.
- Если твой HTML весит 15 КБ — первые 14 КБ уйдут сразу, но оставшийся 1 КБ TCP не отправит, пока не придет подтверждение (ACK) на первые пакеты. Это уже второй RTT!
Разница всего 1 КБ, но из-за ограничений Slow Start получаем практически вдвое больше задержки по времени.
А что в реальном мире?
В жизни все сложнее: есть DNS-запросы, TLS-рукопожатия (в TLS 1.2 — это еще +2 RTT, в TLS 1.3 — всего +1 RTT, а с 0-RTT вообще можно обойтись без задержек при повторном подключении). HTTP/2 добавляет мультиплексирование, а HTTP/3 на базе QUIC вообще избавляется от классического TCP Slow Start.
Но самое интересное — не все CDN одинаковы! У большинства хостеров (Netlify, Heroku) начальное окно = 10 MSS (14.6 КБ), а вот Cloudflare, Fastly и GitHub Pages используют 30 MSS — это уже ~43 КБ в первой волне! Это значит, что на Cloudflare твоя страница в 15 КБ загрузится так же быстро, как 14 КБ на обычном хостинге.
Полезные выводы
- Чистишь лишнее, сжимаешь контент — каждый байт имеет значение, особенно если ты близок к границе окна перегрузки.
- Существует даже 14KB Club — сообщество сайтов, которые грузятся за один RTT.
- Не забывай про TLS 1.3 и HTTP/3 — они серьезно улучшают производительность.
- Выбор CDN тоже важен — разные провайдеры используют разные настройки initial congestion window.
А ты обращаешь внимание на размер первоначальной загрузки своих сервисов? Может быть, ты уже применяешь какие-то оптимизации или используешь определенные CDN для ускорения? Сталкивался ли ты с проблемами производительности из-за TCP Slow Start? Делись в комментариях — интересно узнать, как ты боришься с задержками и оптимизируешь время загрузки!
#SRE #DevOps #Performance #TCP #SlowStart #WebOptimization #HTTP2 #HTTP3 #CDN #Networking #Latency
Привет,
%username%! Знал ли ты, что добавив всего 1 КБ данных к своему сайту, ты можешь удвоить время его загрузки? Звучит как магия, но на самом деле все дело в том, как работает TCP Slow Start — механизм, который не дает серверу сразу заливать весь ответ клиенту.Когда браузер подключается к серверу, они сначала делают "рукопожатие" (TCP Handshake) — обмениваются тремя пакетами (SYN, SYN-ACK, ACK), что занимает один RTT (Round Trip Time — время туда и обратно). Только после этого начинается передача данных, но и тут TCP не торопится.
Вот в чем фишка: TCP начинает с маленького окна перегрузки (Congestion Window), обычно равного 10 MSS (Maximum Segment Size). MSS — это максимальный размер полезных данных в одном TCP-сегменте, обычно около 1460 байт. Умножаем 1460 байт на 10 MSS и получаем примерно 14 600 байт — наши магические 14 КБ!
Что это означает на практике?
- Если твой HTML весит 14 КБ — он полностью влезает в начальное окно и прилетает за один RTT.
- Если твой HTML весит 15 КБ — первые 14 КБ уйдут сразу, но оставшийся 1 КБ TCP не отправит, пока не придет подтверждение (ACK) на первые пакеты. Это уже второй RTT!
Разница всего 1 КБ, но из-за ограничений Slow Start получаем практически вдвое больше задержки по времени.
А что в реальном мире?
В жизни все сложнее: есть DNS-запросы, TLS-рукопожатия (в TLS 1.2 — это еще +2 RTT, в TLS 1.3 — всего +1 RTT, а с 0-RTT вообще можно обойтись без задержек при повторном подключении). HTTP/2 добавляет мультиплексирование, а HTTP/3 на базе QUIC вообще избавляется от классического TCP Slow Start.
Но самое интересное — не все CDN одинаковы! У большинства хостеров (Netlify, Heroku) начальное окно = 10 MSS (14.6 КБ), а вот Cloudflare, Fastly и GitHub Pages используют 30 MSS — это уже ~43 КБ в первой волне! Это значит, что на Cloudflare твоя страница в 15 КБ загрузится так же быстро, как 14 КБ на обычном хостинге.
Полезные выводы
- Чистишь лишнее, сжимаешь контент — каждый байт имеет значение, особенно если ты близок к границе окна перегрузки.
- Существует даже 14KB Club — сообщество сайтов, которые грузятся за один RTT.
- Не забывай про TLS 1.3 и HTTP/3 — они серьезно улучшают производительность.
- Выбор CDN тоже важен — разные провайдеры используют разные настройки initial congestion window.
А ты обращаешь внимание на размер первоначальной загрузки своих сервисов? Может быть, ты уже применяешь какие-то оптимизации или используешь определенные CDN для ускорения? Сталкивался ли ты с проблемами производительности из-за TCP Slow Start? Делись в комментариях — интересно узнать, как ты боришься с задержками и оптимизируешь время загрузки!
#SRE #DevOps #Performance #TCP #SlowStart #WebOptimization #HTTP2 #HTTP3 #CDN #Networking #Latency
14Kbclub
14KB Club | 14kbclub.com
An exclusive membership club of websites that do not exceed 14kb of size.
👍10❤1