Пятничный деплой
4.75K subscribers
1.52K photos
35 videos
167 files
7.96K links
Подборка ссылок, статей и постов из мира DevOps\SRE\разработки. Если вы хотите прислать фидбек, интересную статью или просто поболтать пишите @count0ru https://xn--r1a.website/s/count0_digest
Download Telegram
🛠HTTP/2: The Sequel is Always Worse. Всё ли так хорошо с http2? Автор статьи не уверен в этом. #http2 #security #напочитать
Forwarded from Мишка на сервере (Mikhail Savin)
Почему 1 КБ может замедлить загрузку сайта?

Привет, %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
👍101