Звісно заголовок виглядає як зрозуміла річ, бо чим менше клієнту треба щоб показати інформацію, тим швидше він з цим впорається. Але насправді різниця між парами 13 КБ та 14 КБ і 15 КБ та 16 КБ буде схожою, а от між 14 КБ та 15 КБ може відрізнятись на декілька порядків.

У цьому винно споконвічне правило “не зламай інтернет” і надбудови над надбудовами у вигляді різних протоколів, а конкретно TCP. Тож давайте розберемося трохи більше чому так відбувається.

В двох словах про IP->TCP->HTTP

Звісно інтернет розвивався ітеративно і оскільки зробити умовний Інтернет 2.0, з точки зору технологій, майже нереально, то і стандарти і протоколи розвиваються на базі вже існуючих. Ситуація дуже схожа з умовними фреймворками, де ти звісно можеш використовувати javascript, але тобі прийдеться всі базові речі робити власноруч, або є можна взяти React або Solid і забути про роботу з DOM елементами без зручних абстракцій.

IP (Internet Protocol) має півтора десятки різних блоків даних, але, в той же час, має обмеження на всі дані приблизно в 8 КБ, до того ж він не вміє отримувати фідбек від серверу, тож у минулому була проблема, коли пакети втрачались, але клієнт не розумів, що щось пішло не так.

Тож був розроблений новий стандарт поруч з IP під назвою TCP. Головною метою якого була якраз таки можливість обмінюватись інформацією про успішність або неуспішність операцій між сервером та клієнтом.

У свою чергу HTTP та FTP побудовані на стеці TCP/IP які мають свій фіксований порт та набори правил, щоб кінцевому розробнику було легше працювати.

Історичні обмеження

Звісно інтернет був не одразу швидкісним і оптоволоконним, а у деяких країнах, або у віддалених частинах країни все ще є застарілі технології з повільним інтернетом. Тож у TCP є так званий “повільний старт”. Це алгоритм, який дозволяє зрозуміти яка пропускна спроможність у клієнта.

Як тільки браузер відправляє перший запит на сервер, то зв’язок ще не встановлений і сервер не знає який об’єм інформації можна безпечно передати. Тож відправляється мінімальна кількість TCP пакетів, як правило 10.

Якщо браузер відповідає, що все отримав і нічого не загубив, то сервер подвоює кількість пакетів і так до тих пір поки не клієнт загубить пакети і не відправить підтвердження про успішну передачу. З того моменту сервер буде відправляти попередню успішну кількість пакетів.

І до чого тут 14 кб?

Через стандарт ethernet один пакет TCP може вмістити в себе 1500 байт і якщо відкинути технічні частини пакету, то корисного простору лишається десь 1460 байт і якщо помножити на 10 пакетів, то і виходить, грубо кажучи, 14КБ.

Тож, якщо ваша сторінка, або, принаймні, критична частина функціоналу поміщається у 14КБ ви зможете збільшити якість роботи з вашим сайтом у користувачів.

Просто, наприклад, затримка на одне коло обміну даними між сервером і клієнтом для 3G інтернету може сягати аж 500 мілісекунд, або пів секунди. Якщо додати туди туди захищений HTTPS протокол, який всюди в інтернеті, то це ще два додаткових кола обміну інформацією і того вже півтори секунди щоб відкрити сторінку менше 14КБ. Згадуючи алгоритм “холодного старту” TCP ви зможете самі порахувати скільки треба часу, щоб завантажити ваш модний сайт.

Замість висновків

Звісно більша частина в цьому дописі буде стосуватися крайніх випадків, як то з 3G інтернетом, але я сподіваюсь, що завдяки посиланням нижче ви дізнаєтесь трохи більше про стандарти з якими працюєте, якщо ще ні, а також будете намагатись мінімізувати розміри ваших вебсайтів, бо як ми дізнались, чим менше кіл обмінну даних пройде між сервером і клієнтом, ти краще буде досвід роботи з вашим вебсайтом.

Посилання