Имеет ли значение, где физически находится ваш сервер
Бизнес в Хельсинки, сервер в Нидерландах. Мы измерили, во сколько это обходится на самом деле: примерно 29 миллисекунд. И нашли цифру, которая оказалась в двадцать пять раз важнее.
- Сколько стоит расстояние
- Расстояние оплачивается трижды
- Цифра, которую никто не проверяет
- Что умеет CDN и что ему приписывают
- Где разница всё-таки чувствуется
- Два мифа, с которыми пора расстаться
- Где география решает по-настоящему: право, а не скорость
- Куда мы вложили деньги вместо этого
- Так имеет это значение или нет
Этот вопрос всплывает почти в каждом разговоре с клиентом за пределами Нидерландов. Человек из Хельсинки, Таллинна или Вены сравнивает нас с хостингом в соседнем квартале и спрашивает вполне разумную вещь: ваши серверы в Амстердаме, а мой бизнес здесь, значит сайт будет открываться медленнее?
Обычно на это отвечают одним словом «CDN» и переводят разговор дальше. Мы решили ответить цифрами и всё замерили. Ниже то, что получилось, включая один результат, который нас самих не украсил.
Сколько стоит расстояние#
Начнём с физики, потому что с ней спорить бесполезно. По оптике сигнал идёт примерно на двух третях скорости света, а от Амстердама до Хельсинки около 1500 км. Ниже определённого порога время отклика не опустится никак.
Мы замеряли с нескольких независимых точек в Хельсинки, на разных финских сетях. Чистые результаты легли очень кучно:
| Из Хельсинки до | Отклик |
|---|---|
| Наши серверы, Нидерланды | 28,6 мс |
| Финский хостинг, Хельсинки | 1,4 мс |
Трассировка из нашей стойки объясняет, почему цифра такая стабильная: десять узлов, выход через сеть Worldstream в Нидерландах, европейский магистральный канал, Финляндия. Ни петель, ни заторов.
Вот и весь ответ на физическую часть вопроса. Сервер в Нидерландах вместо Финляндии стоит посетителю из Хельсинки примерно 27 миллисекунд на каждый обмен с сервером. Цифра настоящая, и мы не собираемся делать вид, что её нет. Если хостинг говорит вам, что расстояние ничего не стоит, он рассчитывает, что вы не проверите.
Расстояние оплачивается трижды#
Двадцать семь миллисекунд звучат как ничто, и сами по себе они ничто и есть. Загвоздка в том, что установка нового HTTPS-соединения занимает не один обмен с сервером, а примерно три: один на TCP, ещё один или два на рукопожатие TLS, и последний на сам запрос, прежде чем придёт первый байт ответа.
Вот та же загрузка страницы по шагам, замер из Хельсинки:
| Шаг | Финский хостинг | Наш сервер, NL | Разница |
|---|---|---|---|
| TCP-соединение | 4 мс | 29 мс | +25 мс |
| Рукопожатие TLS | 5 мс | 32 мс | +27 мс |
| Время до первого байта | 1 мс | 30 мс | +29 мс |
| Ответ целиком | 23 мс | 98 мс | +75 мс |
То есть честная цифра не 27 миллисекунд, а ближе к 80. Расстояние успевает списаться трижды ещё до того, как страница начнёт рисоваться.
Теперь приложим эти 80 мс к чему-нибудь осмысленному. Хорошим показателем LCP у Google считается 2,5 секунды. Обычный сайт небольшой компании укладывается где-то в полторы–три секунды. На этом фоне 80 мс дают около трёх процентов. Расход реальный, но при этом самый маленький в списке.
Цифра, которую никто не проверяет#
А вот момент, который поменял наш собственный взгляд на весь этот вопрос.
Пока мы для сравнения замеряли финские хостинги, один и тот же провайдер попался нам дважды. Основной сайт отвечал за 28 мс. А его же домен без www, который не делает вообще ничего, кроме переадресации, выдавал эту переадресацию от 572 до 780 мс.
Одна компания. Одно здание. То же железо. Тот же город, что и посетитель. Разница в двадцать пять раз, и вызвана она целиком тем, чем сервер занят, а не тем, где он находится.
Этот разрыв примерно в двадцать пять раз больше, чем всё расстояние от Финляндии до Нидерландов. И именно его почти никто не измеряет, потому что спросить «где ваши серверы» легко, а выяснить, что происходит между приходом запроса и уходом первого байта, уже нет.
Расстояние — величина постоянная, маленькая и заранее известная. Настройка — величина переменная, большая и обычно как раз проблемная. Если сайт отвечает две секунды, переезд на 1500 км ближе даст вам 1,92 секунды, и вы этого не заметите. Включённый кэш страниц даст 0,2 секунды, и это заметят все.
Про то, куда именно уходят эти секунды, мы подробно писали в тексте почему сайт тормозит. Ни одна из главных причин к географии отношения не имеет.
Что умеет CDN и что ему приписывают#
Тут пора вернуться к тому самому ответу одним словом, который мы обещали не давать.
Звучит он так: поставьте Cloudflare, посетитель попадёт на ближайший узел, и расстояние исчезнет. Это правда ровно наполовину, и вторую половину обычно не договаривают.
CDN отдаёт с ближайшего узла то, что у него закэшировано, и с этим он справляется прекрасно. Картинки, стили, скрипты, шрифты: всё это может лежать в Хельсинки или Таллинне и приезжать за пару миллисекунд, где бы ни находился ваш сервер.
С незакэшированным содержимым всё иначе. Если нужной страницы у узла нет, он идёт за ней на ваш сервер, и запрос едет по маршруту «посетитель, узел, сервер» и обратно. А если соединение между узлом и сервером ещё и не прогрето, что на сайте с небольшим трафиком случается постоянно, вы не убрали одно рукопожатие, а добавили лишнее.
Мы замерили это на собственном сайте, и результат как раз тот, который нас не украсил. Один и тот же адрес, один и тот же сервер, один и тот же момент, разные точки замера:
| Маршрут | Время до первого байта |
|---|---|
| Через узел в Амстердаме, рядом с нашим сервером | 66 мс |
| Через узел в Таллинне, рядом с посетителем | 200 мс |
Посетитель, которому достался более близкий узел, получил результат втрое хуже. Наш HTML помечен как приватный и некэшируемый, поэтому каждый запрос всё равно идёт до сервера целиком, а начинать этот путь из Таллинна вместо Амстердама — значит просто добавить себе километров.
Это не претензия к Cloudflare, который делает ровно то, о чём его попросили. Это предупреждение против неверной картинки в голове. CDN по своей природе — кэш, а кэш помогает только с тем, что ему разрешили хранить. Если поставить его перед полностью динамическим сайтом, можно уехать назад, а не вперёд.
Отсюда честный совет. Используйте CDN для статики, там он действительно даёт местную скорость. Если хотите, чтобы и HTML отдавался с ближайшего узла, его придётся осознанно сделать кэшируемым, а это уже полноценное решение со своими последствиями, а не галочка в панели.
Где разница всё-таки чувствуется#
Мы не будем утверждать, что расстояние не значит ничего никогда. Есть три случая, когда оно заметно.
Страницы, которые нельзя закэшировать. Закэшированная страница отдаётся из памяти за миллисекунду, и почти весь ваш расход — это дорога. С личным кабинетом — иначе: корзина, оформление заказа, админка WordPress. Каждый такой запрос идёт до сервера, и каждый платит расстояние полностью. Если вы проводите день внутри wp-admin, разницу между сервером в своём городе и сервером за границей вы почувствуете. Посетители в основном нет. А вы да.
Болтливый фронтенд. Если страница делает дюжину запросов к API один за другим и каждый ждёт предыдущего, расстояние умножается на двенадцать. Так 30 мс превращаются в 360 мс. Лечится это отказом от двенадцати последовательных запросов, но знать про такую механику полезно.
Аудитория сильно дальше. Всё написанное выше — про Европу. Если половина вашего трафика в Сингапуре или Сан-Паулу, ни один европейский сервер к ним не близко, и разговор нужен другой, скорее всего как раз про CDN.
Два мифа, с которыми пора расстаться#
Расположение сервера не влияет на позиции в поиске. Этот миф пережил свою полезность лет на десять. Google понимает, для кого ваш сайт, по домену, по тегам hreflang, по языку, по содержимому и по настройкам в Search Console. IP-адрес сервера в лучшем случае слабая подсказка, а с распространением CDN он и вовсе перестал что-либо значить. Домен в зоне .fi на голландском сервере ранжируется в Финляндии ровно так, как должен.
«Местный» хостинг часто не местный. Прежде чем доплачивать за сервер в своей стране, проверьте, где он находится на самом деле. Заметная часть национальных хостинговых брендов — это перепродажа мощностей в Германии или Нидерландах с местным названием на счёте. Сделайте трассировку или посмотрите, где заканчивается IP-адрес за доменом. Иногда «местный» и «зарубежный» хостинг находятся буквально в одном здании.
Где география решает по-настоящему: право, а не скорость#
Есть смысл, в котором расположение значит очень много, и скорость тут ни при чём.
Если вы европейская компания и работаете с данными европейских клиентов, вам нужно, чтобы эти данные оставались в юрисдикции ЕС. Без передачи в третьи страны, которую придётся обосновывать, и без американского CLOUD Act, который придётся кому-то объяснять. Нидерланды в ЕС. Финляндия тоже. С точки зрения GDPR это один и тот же ответ, и он сильно отличается от дешёвого сервера в Вирджинии.
Наши серверы в Амстердаме. Резервные копии уезжают к отдельному провайдеру внутри ЕС и шифруются до того, как покинут наше здание, так что у провайдера копий лежит только набор нечитаемых байтов и ничего больше. Всю логику мы разбирали в тексте что на самом деле значит хостинг с соблюдением GDPR.
Вот это в вопросе «где находится ваш сервер» стоит внимания. И здесь ответ действительно местный.
Куда мы вложили деньги вместо этого#
Выкупить обратно те 27 миллисекунд невозможно, ни у кого. Поэтому вопрос полезнее ставить иначе: на что ушёл бюджет, который иначе съела бы наценка за слово «местный».
Мы держим собственное железо. Не кусочек чьего-то публичного облака, а отдельную машину Dell с 24-ядерным AMD EPYC, 128 ГБ памяти и серверными SSD Micron, за которой следим сами, а не арендуем по часам. Это значит, что мы знаем, что ещё на ней работает. Про арендованный сервер в чужом облаке так сказать нельзя.
Дальше — то, что двигает стрелку сильнее, чем 80 миллисекунд:
- LiteSpeed Enterprise с LSCache. На WordPress закэшированная страница отдаётся примерно за миллисекунду. Одна эта функция стоит раз в десять больше, чем вся дорога отсюда до Хельсинки.
- CloudLinux с лимитами на каждый аккаунт, чтобы шумный сосед не мог съесть ваш процессор. На перепроданном общем хостинге именно это портит день, и никакая близость от такого не спасает.
- PHP от 5.6 до 8.5, переключается для каждого сайта отдельно. Старая версия PHP отнимает больше скорости, чем целый океан.
- ModSecurity с полным набором правил OWASP, 979 штук, применяются на уровне веб-сервера.
- JetBackup с реальными сроками хранения по тарифам, копии вне сервера, зашифрованные, внутри ЕС.
- Собственные DNS-серверы, бесплатный перенос сайта на любом тарифе, IPv6 везде и поддержка, которая отвечает каждый день в течение двенадцати часов.
Так имеет это значение или нет#
Полторы тысячи километров обходятся посетителю из Финляндии примерно в 80 миллисекунд на холодной загрузке. Это настоящая цифра, мы её замерили, и нам приятнее дать вам её, чем рекламное обещание.
Всё остальное в списке крупнее. Отсутствующий кэш стоит секунд. Перепроданный сосед стоит секунд. Четыре мегабайта неуменьшенных картинок стоят секунд. Старый PHP стоит десятых долей секунды. Расположение сервера стоит сотых.
Выбирайте хостинг по тому, что у него внутри и как он это обслуживает. А потом проверьте, что он в ЕС, потому что вот эта часть про карту действительно важна.
Хотите узнать, что ваш сайт показывает прямо сейчас из тех мест, где живут ваши клиенты? Замерьте сами — бесплатно, без регистрации, секунд за пятнадцать, и на той же сети измерений, из которой взяты все цифры выше. А потом пришлите нам результат, и мы скажем, что чинили бы первым. Быть нашим клиентом для этого не нужно.