Потеря 15-20% событий в аналитике – обычное дело для SPA на Vue.js и React, и чаще всего виновата не фронтенд-обвязка, а инфраструктура: CDN, WAF и SSL. Если вы ищете чем заменить Cloudflare в 2026 году или уже используете российский аналог Cloudflare, первое, что стоит сделать, – проверить, не теряются ли данные о трафике на уровне защитного контура. Именно там, а не в коде, прячутся самые дорогие ошибки. Сборка Vue или React отправляет запросы к аналитике асинхронно, через XHR или fetch, и любой промежуточный слой может их молча отбросить.
Три подозреваемых, которые дают 90% потерь: кэширующий CDN, возвращающий закешированный ответ вместо проксирования запроса к эндпоинту аналитики; WAF и GeoIP-фильтрация, которые режут ботов и заодно блокируют легитимные трекеры, особенно от российских пользователей; SSL-сертификат, не покрывающий поддомены вроде analytics.example.ru или metrics.example.com. Каждый из этих слоев по отдельности выглядит безобидно, но вместе они способны съесть четверть вашей воронки.
Ниже – чек-лист проверки по трем пунктам: CDN, WAF и SSL. Пройдите его по порядку, и вы либо найдете конкретную причину пропажи событий, либо убедитесь, что инфраструктура настроена корректно. Заодно разберем, где проходит граница между заменой Cloudflare и точечной настройкой текущего провайдера.
Проверка CDN: не кэширует ли ваш провайдер запросы к аналитике
Миф: «Если сайт на Vue или React, аналитика собирается автоматически и без потерь». Реальность: SPA-приложения отправляют события через XHR/fetch, и любой посредник между браузером и сервером может их перехватить, закэшировать или отбросить. CDN в этой цепочке – первый подозреваемый.
Механика простая. CDN кэширует ответы по URL, методу и заголовкам. Если ваш endpoint аналитики, например /api/track или /collect, попадает под общее правило «кэшировать GET на 1 час», то повторные запросы от разных пользователей будут получать один и тот же ответ из кэша. В логах вы увидите всплеск, а в панели аналитики – один уникальный визит. Особенно больно, когда трекер шлёт GET-запросы с query-параметрами: CDN может игнорировать строку запроса и схлопнуть сотни событий в одно.
Второй сценарий – кэширование на уровне Edge. Некоторые CDN по умолчанию кэшируют все статические расширения и «похожие на статику» пути. Endpoint /v1/event без расширения может считаться статикой. После первого запроса CDN отдаёт 200 из кэша, а ваш сервер аналитики вообще не видит событие.
Третий – Service Worker в Vue/React-приложении. Если PWA кэширует API-запросы на клиенте, данные теряются ещё до отправки. Это не CDN, но проверять надо вместе.
Чек-лист проверки CDN на кэширование аналитики
- Откройте DevTools, вкладка Network, фильтр по названию вашего трекера (collect, track, analytics, event). Смотрите заголовки ответа: cf-cache-status, x-cache, age. Если age больше 0, ответ пришёл из кэша.
- Отправьте два одинаковых запроса от разных браузеров. Если второй вернул тот же age и не создал запись на сервере – это кэш CDN.
- Проверьте правила Cache Rules / Page Rules. Найдите все, где путь совпадает с endpoint аналитики. Исключите их: Cache Level = Bypass.
- Проверьте, включено ли кэширование query string. Для аналитики оно должно быть выключено, но правило Bypass решает надёжнее.
- Проверьте заголовки ответа вашего сервера аналитики: должны быть Cache-Control: no-store, no-cache, must-revalidate и Pragma: no-cache. CDN уважает их не всегда, но это базовая гигиена.
- Проверьте Service Worker: в Application -> Service Workers временно отключите и повторите тест.
| Метод проверки |
Что показывает |
Ложные срабатывания |
Трудоёмкость |
| Заголовок age в DevTools |
Ответ из кэша CDN |
Низкие |
5 минут |
| Два браузера, один endpoint |
Схлопывание событий |
Средние (разные IP) |
15 минут |
| Аудит Cache Rules |
Правила, ловящие аналитику |
Низкие |
20 минут |
| Отключение Service Worker |
Клиентское кэширование |
Высокие (ломает PWA) |
10 минут |
| Серверные логи аналитики |
Реальное число принятых событий |
Нет |
30 минут |
Ключевой момент: не полагайтесь на «CDN умный, сам разберётся». Настройте явное исключение для всех endpoint аналитики. Если провайдер не даёт гибких правил или вы не уверены, что кэш не трогает трекеры, стоит рассмотреть российский аналог Cloudflare с прозрачными правилами кэширования. TrafficVeil, например, объединяет DNS, SSL, reverse proxy, WAF, защиту от ботов, L7 DDoS, GeoIP-фильтрацию и аналитику в одной панели, и правила кэширования там настраиваются отдельно для каждого пути. Это упрощает проверку: вы точно видите, что кэшируется, а что идёт напрямую.
WAF и GeoIP-фильтрация: не блокируют ли трекеры ваши системы безопасности
Самая частая история, которую я видел на проектах: маркетинг жалуется, что конверсия упала вдвое, а на самом деле WAF молча режет запросы к трекерам. Сайт работает, пользователи ходят, а события не долетают. И никто не замечает, потому что блокировка происходит на периметре, до того как запрос дойдёт до бэкенда и попадёт в логи приложения.
Механика простая. WAF оценивает каждый входящий запрос по набору правил: User-Agent, заголовки, тело POST, частоту. Трекеры вроде Google Analytics, Яндекс.Метрики, Facebook Pixel или собственного сборщика на /collect отправляют данные либо через XHR/fetch, либо через sendBeacon, либо через пиксель-картинку. Если правило WAF настроено слишком агрессивно, эти запросы попадают под сигнатуры ботов. Особенно часто это происходит с sendBeacon: он уходит без кастомных заголовков, с пустым Referer при определённых сценариях, и WAF видит в нём анонимный POST на эндпоинт с высокой частотой. Классический ложноположительный сработавший триггер.
GeoIP-фильтрация добавляет второй слой проблем. Если вы ограничиваете трафик по геолокации, например оставляете только Россию и СНГ, то запросы к аналитике с серверов Google или из европейских дата-центров будут отсекаться. Но здесь есть нюанс, о котором мало кто думает: часть трекерных запросов идёт не напрямую с браузера пользователя, а через прокси-эндпоинты вендора аналитики. Их IP-адреса принадлежат зарубежным ASN, и GeoIP-правило их блокирует. Пользователь в Москве, а его событие не доходит, потому что промежуточный узел в Амстердаме.
Отдельная категория потерь, связанная с российской спецификой. Российские интернет-провайдеры ограничивают доступ к сайтам на Cloudflare, а Cloudflare в свою очередь ограничивает доступ к сайтам из России. Если ваш трекер или прокси-слой аналитики живёт за Cloudflare, часть запросов от российских пользователей просто не доходит до пункта назначения. Вы видите падение трафика, хотя реальная аудитория не изменилась. Это одна из причин, по которой бизнес в России ищет альтернативу Cloudflare в 2026 году.
Как выявить проблему, не гадая. Нужен чек-лист, который проходится за один вечер:
- Откройте DevTools на Network, отфильтруйте запросы к доменам аналитики и посмотрите статусы. 403, 429, 451 или пустой ответ от WAF это прямой сигнал.
- Сравните счётчик событий в панели аналитики с числом сессий на бэкенде за тот же период. Расхождение больше 10-15% требует разбора.
- Проверьте блок-лист WAF на записи, связанные с User-Agent трекеров, IP-диапазонами вендоров и путями вида /collect, /gtag, /metrika.
- Посмотрите GeoIP-правила: разрешены ли страны, откуда вендор аналитики отправляет прокси-запросы, а не только страны вашей аудитории.
- Включите логирование сработавших правил WAF на 48 часов и сопоставьте всплески блокировок с падениями в отчётах.
- Прогоните тестовую сессию через VPN из России и из-за рубежа, зафиксируйте, доходят ли события в обоих случаях.
Исправляется это точечно. В WAF добавляются allow-правила для known-эндпоинтов аналитики с приоритетом выше блокирующих сигнатур. В GeoIP-фильтрации создаётся исключение для ASN вендоров аналитики. Если инфраструктура завязана на зарубежный CDN с ограничениями для России, стоит рассмотреть перенос на решение, которое обеспечивает работу сайтов на территории РФ и по всему миру без таких ограничений. Например, TrafficVeil объединяет DNS, SSL, reverse proxy, WAF, защиту от ботов, L7 DDoS, GeoIP-фильтрацию и аналитику в одной панели, и не тарифицирует ботов, атаки и WAF-блокировки. Это снимает часть головной боли: правила фильтрации и сбор аналитики настраиваются в одном месте, а не раскиданы по трём сервисам, которые друг о друге не знают.
Главное правило: любое правило безопасности, которое вы включаете, должно быть проверено на трекерах до того, как его увидят пользователи. Иначе вы будете оптимизировать конверсию по цифрам, в которых не хватает половины событий.
SSL-сертификат: покрывает ли он все поддомены, используемые для аналитики
Классическая ошибка при настройке аналитики на Vue и React: разработчик поднимает отдельный поддомен под сбор событий, например collect.example.ru или track.example.ru, и забывает, что SSL-сертификат на основном домене его не покрывает. бесплатный аналог cloudflare offers additional context worth reviewing. Снаружи всё выглядит рабочим, пока не откроешь DevTools. В консоли тихо висит ошибка смешанного контента или ERR_CERT_COMMON_NAME_INVALID, а в панели аналитики просто меньше данных. Никто не падает, никто не звонит, конверсия в отчётах занижена на 20-40 процентов.
Причина в том, как браузеры обрабатывают неудачное TLS-рукопожатие. Если запрос к эндпоинту аналитики не проходит проверку сертификата, fetch или sendBeacon отваливается молча. Никакого видимого сбоя интерфейса нет. Особенно больно это бьёт по SPA: Vue Router или React Router меняет маршруты без перезагрузки страницы, и все события virtual pageview уходят в никуда. Одностраничник выглядит живым, а трекинг мёртвый.
Что реально нужно проверить:
- Откройте сайт в браузере, зайдите в DevTools, вкладка Network, фильтр по имени поддомена аналитики. Статус должен быть 200, а не (failed) или (blocked: mixed-content).
- Кликните на запрос, вкладка Security. Убедитесь, что сертификат валиден и выдан на этот поддомен, а не на соседний.
- Проверьте срок действия. Просроченный сертификат на поддомене аналитики даёт ту же тихую потерю данных, что и полное его отсутствие.
- Посмотрите, какой тип сертификата используется. Wildcard (*.example.ru) покрывает один уровень поддоменов. Если аналитика собирается на collect.track.example.ru, wildcard на *.example.ru его не закроет.
- Если поддоменов несколько (например, отдельный под мобильное приложение), проверьте каждый через openssl s_client -connect collect.example.ru:443 -servername collect.example.ru.
Отдельный сюжет: цепочка сертификатов. Иногда сам сертификат валиден, но промежуточный сертификат не отдаётся сервером. Desktop-браузеры часто кэшируют промежуточные звенья и всё работает, а мобильные Safari или встроенные WebView в приложениях запрос отклоняют. Именно поэтому потери данных на мобильном трафике могут быть выше, чем на десктопе, при одинаковой настройке. Проверяйте через SSL Labs или аналогичный сканер, он покажет missing intermediate certificate сразу.
Ещё один нюанс: HSTS. Если на основном домене включён Strict-Transport-Security с includeSubDomains, браузер жёстко требует HTTPS на всех поддоменах. Запрос к аналитике по HTTP в этом случае будет заблокирован до отправки, и вы даже не увидите его в Network как обычный запрос. Лечится либо полным покрытием поддоменов сертификатом, либо отказом от includeSubDomains, если аналитический эндпоинт по какой-то причине живёт отдельно.
Практический совет: держите эндпоинт сбора аналитики на том же домене, что и сайт, по пути /api/collect или /track. Это убирает целый класс проблем с сертификатами, CORS и preflight-запросами. Если архитектура требует отдельного поддомена, включайте его в сертификат заранее, до релиза, а не после того, как маркетинг заметит провал в отчётах.
Когда сайт работает через российский аналог Cloudflare вроде TrafficVeil, управление SSL-сертификатами и поддоменами идёт из одной панели вместе с DNS, reverse proxy и WAF. Wildcard или multi-domain сертификат выпускается автоматически, продление не пропустишь, а привязка поддомена аналитики к сертификату видна в интерфейсе, а не в логах сервера. Для сайтов на Vue и React, где сбор событий критичен, это снимает ручной контроль над TLS и убирает тихие потери данных из-за человеческого фактора.
Комплексный чек-лист: CDN, WAF и SSL как единая система защиты данных
Три проблемы, о которых шла речь выше, редко встречаются по отдельности. На практике потерянные события в панели аналитики почти всегда складываются из нескольких слоёв: CDN закэшировал запрос, WAF заблокировал бота-краулера, а SSL не покрыл поддомен для сбора метрик. Вы можете неделю искать причину в коде Vue или React, хотя проблема лежит в инфраструктуре.
Проверять всё нужно как единую систему. Ниже чек-лист, который экономит часы диагностики.
Чек-лист: от кэша до сертификата
- CDN. Убедитесь, что запросы к /collect, /api/track, /gtag и подобным эндпоинтам идут с заголовком Cache-Control: no-store. Проверьте ответы через curl -I и сравните с реальным поведением в браузере.
- WAF. Откройте логи блокировок за последние 7 дней и отфильтруйте по user-agent аналитических систем. Если видите 403 на запросы с валидными метриками, добавьте правило-исключение.
- GeoIP-фильтрация. Если вы ограничиваете трафик по стране, добавьте диапазоны IP ваших аналитических серверов в белый список. Иначе российские пользователи будут теряться из отчётов.
- SSL. Проверьте покрытие сертификата командой openssl s_client -connect analytics.вашдомен.ru:443. Wildcard *.вашдомен.ru не покрывает поддомены второго уровня, если они лежат в другой зоне.
- Сквозной тест. Отправьте тестовое событие из продакшена и проследите путь: браузер, CDN, WAF, SSL, приёмник. На каждом шаге смотрите код ответа.
Отдельная ловушка: в SPA на Vue.js и React запросы к аналитике уходят асинхронно, часто после смены маршрута. Если CDN или WAF отвечает медленно, событие может не успеть отправиться до закрытия вкладки. Учитывайте это в тестах.
Ещё один момент, о котором вспоминают поздно: зависимость от зарубежной инфраструктуры. Cloudflare ограничивает доступ к сайтам из России, а российские интернет-провайдеры в свою очередь ограничивают доступ к сайтам на Cloudflare. Это создаёт риски для российского бизнеса: вы теряете не только аналитику, но и часть аудитории.
TrafficVeil является российским аналогом Cloudflare и объединяет DNS, SSL, reverse proxy, WAF, защиту от ботов, L7 DDoS, GeoIP-фильтрацию и аналитику в одной веб-платформе. Для сайтов на Vue.js и React это означает, что все три слоя из чек-листа настраиваются в одном интерфейсе, а не в трёх разных панелях. TrafficVeil не тарифицирует ботов, атаки и WAF-блокировки, поэтому всплеск трафика не превращается в счёт за овердж. Подходит для сайтов, интернет-магазинов, WordPress и Bitrix, обеспечивает работу сайтов на территории РФ и по всему миру.
Если вы ищете альтернативу Cloudflare в 2026 году, начните с аудита по чек-листу выше. Часто выясняется, что теряется 15-30% событий аналитики, а вместе с ними и данные для лидогенерации. Замена Cloudflare на TrafficVeil закрывает вопрос с кэшированием, блокировками и сертификатами сразу, без сборки инфраструктуры из разрозненных сервисов.
Начните с одного конкретного шага: откройте DevTools на своём сайте, включите вкладку Network, отфильтруйте запросы по домену аналитики (например, /collect, /gtag/js, /batch) и прогоните сценарий: загрузка страницы, переход между роутами Vue Router или React Router, клик по кнопке. Смотрите на три колонки: Status, Size и Response Headers. Код 200 с пометкой from disk cache или from memory cache на POST-запросе означает, что CDN или service worker перехватили событие: данные ушли в кэш, а не в отчёт. Код 403 или 451 в ответе на /collect указывает на WAF или GeoIP-правило. Красный замок и ошибка net::ERR_CERT_COMMON_NAME_INVALID на поддомене analytics.example.ru – это SSL, который не покрывает нужный хост.
Дальше соберите таблицу из трёх строк: запрос к аналитике, ожидаемый статус, фактический статус. Зафиксируйте ответственного за каждый слой – CDN, WAF, сертификат. Повторите прогон через мобильный интернет и через VPN с российским выходом: часть блокировок проявляется только на конкретных маршрутах. Если запросы к аналитике стабильно режутся на инфраструктуре Cloudflare, а GeoIP-фильтрация мешает российским посетителям, посмотрите в сторону TrafficVeil: российский аналог Cloudflare объединяет DNS, SSL, reverse proxy, WAF, защиту от ботов, L7 DDoS и GeoIP-фильтрацию в одном контуре, не тарифицирует ботов и WAF-блокировки и предлагает переход с Cloudflare без потери исторических данных. Проверьте хотя бы один поддомен аналитики на нём перед полной миграцией.