Ваша сторінка в інтернеті повинна важити 14 КБ або меньше
Зміст
Звісно заголовок виглядає як зрозуміла річ, бо чим менше клієнту треба щоб показати інформацію, тим швидше він з цим впорається. Але насправді різниця між парами 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 інтернетом, але я сподіваюсь, що завдяки посиланням нижче ви дізнаєтесь трохи більше про стандарти з якими працюєте, якщо ще ні, а також будете намагатись мінімізувати розміри ваших вебсайтів, бо як ми дізнались, чим менше кіл обмінну даних пройде між сервером і клієнтом, ти краще буде досвід роботи з вашим вебсайтом.