Почему ваш веб-сайт должен весить меньше 14 КБ?

Оригинал https://endtimes.dev/why-your-website-should-be-under-14kb-i...

Почему ваш веб-сайт должен весить меньше 14 КБ? IT, Программирование, Электроника, Http, Web-программирование, Frontend, Длиннопост

Чем меньше веб-сайт, тем быстрее он грузится, и это неудивительно.


Удивительно то, что страница на 14 КБ может грузиться гораздо быстрее, чем страница на 15 КБ, даже на 612 мс быстрее, хотя разница между страницами на 15 КБ и 16 КБ минимальна.

Так происходит из-за алгоритма медленного старта TCP.



Что такое TCP?


Transmission Control Protocol (TCP) — это способ использования Internet Protocol (IP) для надёжной передачи пакетов данных; иногда его также называют TCP/IP.


Когда браузер запрашивает ваш веб-сайт (или изображение, или таблицу стилей), он выполняет запрос при помощи HTTP.


HTTP построен поверх TCP, один HTTP-запрос обычно состоит из множества пакетов TCP.


Сам по себе IP — это просто система отправки пакетов данных из одной точки Интернета в другую. IP не имеет возможности проверить, добрался ли пакет до пункта назначения.


Когда мы работаем с веб-сайтами, важно знать, прибыли ли все данные, в противном случае фрагменты веб-страницы будут потеряны. Существуют и другие способы применения веба, например, стриминг видео, но в данном случае это неважно.


TCP — это расширение IP, позволяющее браузеру и серверу веб-сайта сказать друг другу, какие пакеты успешно получены.


Сервер отправляет несколько пакетов, затем ожидает ответа от браузера, сообщающего, что он получил пакеты (это называется подтверждением приёма, acknowledgement, или ACK), затем отправляет ещё несколько пакетов, а если он не получил ACK, то может отправить пакеты повторно.

Почему ваш веб-сайт должен весить меньше 14 КБ? IT, Программирование, Электроника, Http, Web-программирование, Frontend, Длиннопост

Что такое медленный старт TCP?


Медленный старт TCP (TCP slow start) — это алгоритм, используемый серверами для определения того, сколько пакетов можно отправить за раз.


Когда браузер выполняет подключение к серверу, сервер никак не может узнать ширину канала между ними.


Ширина канала (bandwidth) — это объём данных, который можно передать по сети за единицу времени. Обычно она измеряется в битах в секунду (бит/с). В качестве аналогии можно привести задачу про воду и трубы: ширина канала — это количество воды, которое может выливаться из трубы в секунду.


Ваш сервер не знает, с каким объёмом данных может справиться соединение, поэтому сначала он отправляет небольшое надёжное количество данных, обычно 10 пакетов TCP.


Если эти пакеты успешно добираются до посетителя сайта, то его компьютер передаёт подтверждение приёма (ACK), сообщающее об успешном получении пакетов.


Затем сервер отправляет новые данные, на этот раз удваивая количество пакетов.


Этот процесс повторяется до утери пакетов, когда сервер не получит ACK. (После этого сервер продолжает отправлять пакеты, но с меньшей частотой.)

Откуда же взялась величина 14 КБ?


Медленный старт TCP большинства веб-серверов начинает с отправки 10 пакетов TCP.


Максимальный размер пакета TCP составляет 1500 байтов.


Этот максимум определяется не спецификацией TCP, а стандартом Ethernet.


В каждом пакете TCP 40 байтов используются под заголовок — 16 байтов для IP и дополнительные 24 байта для TCP.


То есть на каждый пакет TCP остаётся 1460 байтов. 10 x 1460 = 14600 байтов, или приблизительно 14 КБ!


То есть если вы сможете уместить свой веб-сайт (или хотя бы его критически важные части) в 14 КБ, то сэкономите посетителям кучу времени, необходимого для передачи данных туда и обратно между ними и сервером веб-сайта.




А вы знали про правило 14 КБ?

Лига программистов

1.5K постов11.4K подписчика

Добавить пост

Правила сообщества

- Будьте взаимовежливы, аргументируйте критику

- Приветствуются любые посты по тематике программирования

- Если ваш пост содержит ссылки на внешние ресурсы - он должен быть самодостаточным. Вариации на тему "далее читайте в моей телеге" будут удаляться из сообщества