Периферийные вычисления для отдельного сайта: сценарии применения и производительность Cloudflare Workers/Vercel Edge

Главная ценность периферийных вычислений (Edge Computing) — «перенести вычисления на узел, ближайший к пользователю», а не «заставить весь код работать на периферии». Cloudflare Workers бесплатно...

边缘计算:三个值得用、两个不该碰的场景Edge computing: three good fits, two traps 边缘函数不是万能提速器 —— 只有离用户近才有意义Edge is not a magic speed-up — proximity is the only point 适合:A/B分流Good: A/B split 适合:地理重定向Good: geo redirect 适合:边缘鉴权Good: edge auth 按cookie分流,不走源站Split by cookie, no origin roundtrip 分流延迟<10毫秒Latency <10ms 按国家/语言跳对应落地页Route by country/language TTLFB改善50至150毫秒TTFB gain 50-150ms JWT校验在边缘完成JWT verify at edge 省源站往返1次Save 1 origin roundtrip 性能对比(TTFB)TTFB comparison 传统源站渲染:300至800毫秒Origin SSR: 300-800ms 边缘函数渲染:30至100毫秒Edge render: 30-100ms 纯静态CDN:10至50毫秒Pure static CDN: 10-50ms 不该碰的场景When NOT to use edge 长计算(>50毫秒CPU)超时Long compute >50ms: timeout 数据库直连,延迟比源站还高Direct DB: worse latency 大量文件读写受限于内存File IO limited by memory 红线:边缘函数CPU时间上限50毫秒(Cloudflare免费版),超过直接1102错误Red line: 50ms CPU limit on free tier; over = 1102 error 判断标准:你的请求是否要在源站跑数据库查询?要的话边缘帮不上忙,只会更慢Rule: if you hit a DB, edge won’t help — it gets worse
Три сценария применения периферийных вычислений и диапазоны производительности

独立站边缘计算:Cloudflare Workers/Vercel Edge的应用场景与性能

Сначала вывод: 边缘计算(Edge Computing)的核心价值是”把计算搬到离用户最近的节点”,不是”让所有代码都跑在边缘”。Cloudflare Workers免费版CPU时间上限50毫秒,Vercel Edge Functions限制更长但冷启动更慢。真正适合边缘的场景只有三类:地理重定向、A/B测试分流、轻量鉴权。反直觉的是:如果你的页面要查数据库,把逻辑搬到边缘反而更慢——因为边缘节点到数据库的网络距离,比源站到数据库更远。

Что такое периферийные вычисления и как они связаны с CDN

传统CDN只做静态文件缓存,用户请求来了直接返回缓存。边缘计算在CDN节点上跑一小段JavaScript代码,在返回响应之前可以做逻辑判断:根据用户地理位置跳不同页面、根据cookie决定展示哪个版本、校验JWT是否有效。这层逻辑在离用户几十毫秒的节点上执行,不用回源站。

Отличие от серверного рендеринга (SSR): SSR работает на вашем собственном сервере, и всем пользователям по всему миру приходится пересекать океан, чтобы подключиться к этому серверу; периферийные функции работают одновременно на более чем 300 узлах по всему миру, и пользователю достаточно подключиться к ближайшему. Для трансграничного B2B-сайта эта разница в расстоянии напрямую определяет, будет TTFB 100 миллисекунд или 800. О связи CDN и периферии читайте Глобальное ускорение CDN.

反直觉的判断:边缘计算不是”更快的服务器”,它是”更小的服务器”。每个边缘函数的CPU时间有严格上限,不能做重计算。如果你把一个要跑200毫秒的数据库查询逻辑搬到边缘,结果会比在源站跑慢3倍以上——因为边缘节点到数据库的网络距离远。

Среда выполнения Место запуска Лимит времени CPU Холодный старт Доступ к базе данных Модель оплаты
Традиционный сервер (VPS) Один дата-центр Без жёсткого лимита Нет (постоянно в памяти) Локально/внутренняя сеть, быстро Фиксированная оплата за месяц
Cloudflare Workers Более 300 узлов по всему миру 10 мс бесплатно/30 мс платно Почти ноль (изоляция V8) Нужно подключать внешнюю базу данных, медленно Оплата за количество запросов
Vercel Edge Functions Более 25 узлов по всему миру До 30 секунд 10–50 миллисекунд Поддерживает Edge DB Оплата за время вызова
AWS Lambda@Edge Узлы CloudFront по всему миру До 5 секунд 10–100 миллисекунд Нужно подключаться к RDS через публичную сеть За запросы + время

Три сценария, где периферийные вычисления действительно стоит использовать

Сценарий первый: редирект по геолокации и языку. Немецкий пользователь заходит на сайт и автоматически попадает на /de/ — немецкую версию, пользователь из Ближнего Востока — на /ar/ — арабскую. Обычно для этого сервер читает IP-базу и принимает решение, а каждый запрос идёт к источнику. С Cloudflare Workers достаточно 10 строк кода: на периферийном узле сразу возвращаем 301 по стране из IP, и TTFB падает с 400 до 50 миллисекунд. Как настроить hreflang для мультиязычного сайта, читайте в статье Hreflang для мультиязычных сайтов.

Сценарий второй: разделение трафика для A/B-тестов. Вы хотите сделать две версии главной страницы: 50% пользователей видят версию A, 50% — версию B. Обычно сервер читает cookie и решает, какую версию отрендерить. На периферии проще: Workers по хешу cookie переписывает пути к ресурсам в HTML или подставляет другие переменные, а источник об этом даже не знает. Само разделение занимает меньше 10 миллисекунд и не влияет на TTFB.

Сценарий третий: лёгкая аутентификация и защита от парсинга. Запросы после входа пользователя сначала проверяются на периферии: если JWT недействителен, сразу возвращаем 401 и не идём к источнику. Так источник обрабатывает только легитимные запросы, экономя трафик и CPU. Защиту от парсинга тоже можно делать на периферии: при подозрительном User-Agent или слишком высокой частоте запросов сразу отдаём страницу с проверкой и не пропускаем запрос к источнику.

Ситуация Реализация на периферии Выигрыш в производительности Объём работ Рекомендуемый приоритет
Георедирект Workers читает request.cf.country TTFB снижается на 50–150 мс Полдня Высокий
Разделение трафика для A/B-тестов Workers делит трафик по хешу cookie TTFB не растёт 1–2 дня Средний
Аутентификация JWT на периферии Проверка токена на периферии, недействительный сразу отклоняется Нагрузка на источник снижается на 20–40% 2 дня Высокий
Защита от парсинга и ограничение частоты Проверка User-Agent и частоты на периферии Вредные запросы не доходят до источника 1 день Высокий
Персонализированный рендеринг страниц Сборка HTML-фрагментов на периферии Работает только для повторяющихся фрагментов 3–5 дней Низкая

Три: две ловушки, где периферийные вычисления не нужны

Ловушка первая: перенос запросов к базе данных на периферию. Многие считают, что «периферийные вычисления — это круто», и переносят туда даже логику запросов из личного кабинета. В итоге периферийный узел подключается к удалённой базе, и один сетевой запрос занимает 200 миллисекунд — в 5 раз медленнее, чем локальный запрос на источнике. Периферийные функции подходят для логики «без состояния, с малыми вычислениями, на кеше», но не для логики, которой нужна база данных.

Ловушка вторая: перенос всего SSR на периферию. Режим Edge Runtime в Next.js действительно позволяет запускать рендеринг React на периферийных узлах Vercel, но рендеринг сложной страницы может занять больше 100 миллисекунд CPU, упереться в лимиты бесплатного тарифа или из-за холодного старта заставить первого посетителя ждать лишние 50 миллисекунд. Сложный серверный рендеринг по-прежнему должен работать на источнике, а периферия — только лёгкий промежуточный слой. Как управлять сторонними скриптами, читайте в статье Управление сторонними скриптами.

Пример из практики: SaaS-продукт выходит на зарубежные рынки, странице дашборда нужно обратиться к базе данных и отрендериться. Команда с энтузиазмом переписала эту страницу на Vercel Edge Runtime и обнаружила, что задержка от edge-узла до их базы AWS RDS составляет 80 мс, а вместе со временем рендеринга TTFB вырос с 250 мс до 450 мс. После того как дашборд вернули на origin, а на edge оставили только проверку авторизации и маршрутизацию, TTFB снова стал 250 мс.

Ловушка Кажется, что даёт Что получают Правильный подход
Перенос запросов к базе на edge “Ближе к пользователю” Сеть от edge до БД далеко, задержка вырастает в 3–5 раз Запросы к БД остаются на origin, edge только читает из кэша
SSR всего сайта на edge “Глобальное ускорение” Превышение CPU и медленный холодный старт, TTFB только растёт Edge — только промежуточный слой, рендеринг остаётся на origin
Интенсивная работа с файлами “Локальная обработка” На edge нет постоянного диска, память ограничена Файловые операции идут через API объектного хранилища
Долгие вычисления “Параллельно быстрее” Превышение CPU даёт ошибку 1102 Разбить на мелкие задачи или вынести в очередь сообщений

4. Стоимость и выбор платформы: Cloudflare Workers vs Vercel Edge

Cloudflare Workers和Vercel Edge Functions是目前独立站最常用的两个边缘平台。选型主要看你的技术栈和流量规模。Cloudflare Workers用V8 isolate,冷启动接近零,免费版每天10万次请求,非常适合做轻量路由和鉴权。Vercel Edge Functions和Next.js深度集成,如果你已经用Next.js,迁移成本最低,但冷启动比Workers慢。

По стоимости: платный тариф Cloudflare — от 5 долларов в месяц, включает 10 млн запросов; Vercel Pro — от 20 долларов в месяц, edge-функции тарифицируются по времени выполнения, и при большом трафике счёт растёт быстро. Для небольшого и среднего B2B-сайта с месячным PV до 100 000 бесплатного тарифа Cloudflare в основном хватает. Как следить за производительностью, читайте в Мониторинг сайта и оповещения.

Измерение Cloudflare Workers Vercel Edge Functions AWS Lambda@Edge
Холодный старт Почти нулевой (V8) 10–50 миллисекунд 10–100 миллисекунд
Бесплатный лимит 100 000 запросов в день 100 GB-hours в месяц 1 млн запросов в месяц
Платный тариф от 5 долларов в месяц 20 долларов в месяц По факту использования, без месячной подписки
Язык разработки JavaScript/TypeScript JavaScript/TypeScript Node.js/Python
Подходящие фреймворки Чистые функции/промежуточное ПО Глубокая интеграция с Next.js Сайты в экосистеме AWS
Покрытие узлов 300+ городов 25+ стран CloudFront по всему миру

FAQ: частые вопросы

Бесплатного тарифа Cloudflare Workers действительно хватает?
Для B2B-сайта с месячным PV до 100 000 бесплатного тарифа полностью достаточно. Бесплатный лимит — 100 000 запросов в день и 10 мс CPU на запрос. Если у вашего сайта около 50 000 PV в месяц, это в среднем 1700 запросов в день — до бесплатного лимита ещё в 60 раз больше. Беспокоиться стоит не об объёме запросов, а о времени CPU: если код Workers слишком тяжёлый, при превышении 10 мс CPU на запрос будет ошибка.
Как edge-функции связаны с кэшем CDN?
CDN просто отдаёт статические файлы и не выполняет код. Edge-функция запускает логику перед отдачей ответа и решает, что и как вернуть. Можно представить так: CDN — это склад, который сразу отправляет товар, а edge-функция — кладовщик у входа на складе. Чаще всего их используют вместе: edge-функция занимается маршрутизацией и аутентификацией, а после проверки CDN сразу отдаёт закешированный HTML без повторных вычислений.
Что быстрее — Vercel Edge Functions или Cloudflare Workers?
Зависит от сценария. Для лёгкой вычислительной логики у Cloudflare Workers холодный старт почти нулевой, и обычно они быстрее Vercel на 20–50 мс. Если у вас приложение на Next.js, то глубокая интеграция Vercel с Next.js и оптимизация на уровне фреймворка делают общий TTFB стабильнее. При выборе смотрите не только на задержку одного запроса, а на стек вашей команды: уже используете Next.js — берите Vercel, уже используете Cloudflare CDN — берите Workers. Так меньше фрагментации стека.
Можно ли с помощью edge-функций улучшить SEO?
Частично можно, но это не основной инструмент. Что edge-функции могут сделать для SEO: отдавать оптимизированную версию контента по User-Agent поискового бота, возвращать разные теги hreflang в зависимости от региона, блокировать вредоносных краулеров. Но настоящая SEO-оптимизация контента (заголовки, H1, внутренние ссылки, структурированные данные) должна быть прописана в HTML на этапе сборки, а не подставляться динамически через edge-функции. Краулер Google хоть и выполняет JS, но контент, внедрённый на edge, нестабилен — лучше прописать его прямо в HTML.
Как откатить edge-функцию при ошибке?
И Cloudflare, и Vercel поддерживают откат версий: при каждом деплое автоматически сохраняется история версий, и в консоли можно одним кликом вернуться к предыдущей. Советую добавить в процесс деплоя этап постепенного выката: сначала проверить в тестовой среде, затем выпустить на часть трафика по процентам. Если что-то пойдёт не так, откат обычно занимает меньше 30 секунд. Кроме того, для edge-функций нужно подключить мониторинг ошибок — Sentry или встроенные логи платформы. Без мониторинга это всё равно что не выкатывать.
В каких случаях edge-вычисления не ускорят сайт?
Три случая, когда ускорения не будет. Первый: ваш origin уже находится рядом с пользователями по всему миру (например, все пользователи в России и origin тоже в России) — перенос на edge только добавит лишний путь. Второй: основной контент страницы приходит из запросов к базе данных — edge тут не поможет. Третий: у вас мало запросов (меньше 10 000 PV в месяц) — накладные расходы на холодный старт на edge перевесят выгоду. Критерий простой: сначала измерьте TTFB вашего origin. Если он уже в пределах 200 мс, пространства для edge-оптимизации почти нет.

В заключение

Edge-вычисления — это точечная оптимизация, а не революция в архитектуре всего сайта. Они решают конкретное узкое место — «каждый запрос должен идти на origin» — и подходят для лёгкой маршрутизации, аутентификации и распределения трафика. Если идти в edge с ожиданием «весь сайт станет вдвое быстрее», скорее всего вас ждёт разочарование: большая часть медленных мест — это запросы к базе данных и сторонние скрипты, а не сетевое расстояние.

Совет по внедрению: начните с минимального сценария — сделайте геоперенаправление на Cloudflare Workers, чтобы немецких пользователей автоматически перекидывало на немецкую версию сайта. Такой правкой можно заняться уже через полдня, прирост производительности заметен сразу, а рисков минимум. Когда две недели всё проработает стабильно, можно думать о A/B-тестировании или аутентификации на периферии. Не пытайтесь с самого начала перенести весь сайт на периферию.

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

crater
crater Эксперт Crater

Официальный аккаунт организации · crater Crater

环形山 (Crater) — компания, которая помогает выходить на зарубежные рынки: разработка сайтов на WordPress, Google SEO и комплексный рост в GEO. Мы работаем с умными устройствами, промышленным оборудованием, SaaS и новой энергетикой.

Возможности продуктаБелая книга по методологииОтраслевые отчёты
965篇分享
78статей в базе знаний