Почему сайты грузятся быстро: тайная сеть копий по всему миру
Сервер сайта может стоять за океаном, но картинка прилетает к вам мгновенно. Секрет в том, что вы качаете её вовсе не с того сервера, о котором думаете.
Свет — самая быстрая вещь во вселенной, и даже он тратит ощутимое время, чтобы добежать до другого континента. CDN научился это время обходить.
Главный секрет быстрого интернета: не тащить данные через полмира, а заранее положить их копию поближе к вам.
Враг по имени расстояние
Кажется, что интернет мгновенен, но физику не обмануть. Сигнал идёт по кабелям со скоростью, близкой к скорости света, и всё равно дорога из Европы в Австралию и обратно занимает заметные доли секунды. Добавьте десятки промежуточных узлов — и задержка растёт. Чем дальше сервер, тем дольше ждёт страница.
Вторая беда — нагрузка. Если миллион человек одновременно качают видео с одного сервера, он захлебнётся, как одна касса в супермаркете в час пик.
Идея CDN: магазин на каждом углу
Решение называется CDN — Content Delivery Network, сеть доставки контента. Это множество серверов (их зовут точками присутствия), расставленных по городам и странам мира. На них хранятся копии тяжёлого, но редко меняющегося содержимого сайта: картинок, видео, стилей, скриптов, шрифтов.
Аналогия простая. Представьте популярный товар. Можно держать один центральный склад на всю страну — но тогда за каждой покупкой придётся ехать через полстраны. А можно открыть магазинчики в каждом районе и завезти товар туда. Вы заходите в ближайший — и берёте сразу. CDN делает то же с файлами сайта.
Как вас направляют к ближайшей копии
Когда вы открываете сайт, умная система определяет, откуда вы, и отдаёт файлы с географически ближайшего сервера сети. Человеку из Москвы картинка прилетит с узла в Москве, а из Сингапура — с узла в Сингапуре. Сам «главный» сервер сайта при этом может стоять вообще на другом конце света — вы с ним почти не общаетесь.
Что именно раздаёт CDN
| Отдаёт CDN (копии) | Считает главный сервер |
| Картинки, видео, шрифты | Ваш личный кабинет |
| Стили и скрипты | Свежие данные из базы |
| Статичные страницы | Обработку форм и платежей |
Идея в разделении: то, что одинаково для всех и редко меняется, размножают по миру. То, что уникально для вас и постоянно меняется, считают централизованно.
Кеш и срок годности
Файлы на узлах CDN — это кеш, временные копии. У каждой копии есть «срок годности». Пока он не вышел, узел отдаёт сохранённое мгновенно. Когда истекает — узел заново берёт свежую версию с главного сервера и снова раздаёт её всем поблизости. Так редактор сайта может обновить картинку, и через какое-то время новая версия разъедется по всем точкам сети.
Бонус: защита от перегрузок и атак
У CDN есть приятный побочный эффект. Раз запросы размазаны по сотням серверов, никакой внезапный наплыв посетителей не убьёт сайт — нагрузку держит вся сеть. По той же причине CDN помогает отбивать атаки на отказ в обслуживании, когда злоумышленники заваливают сайт паразитным трафиком: огромная распределённая сеть просто поглощает удар, который положил бы один сервер.
Так что когда страница тяжёлого видеосервиса открывается мгновенно, знайте: вы почти наверняка качаете данные не из далёкого дата-центра компании, а с неприметного сервера где-то совсем рядом — из той самой невидимой сети копий, которая делает интернет быстрым.