Как Работают CDN

CDN — распределённая сеть серверов, кэширующая и доставляющая контент из точек, близких к пользователям. Популярные провайдеры: Cloudflare, AWS CloudFront, Fastly, Akamai.

Поток Запроса CDN

  1. Пользователь запрашивает https://example.com/image.jpg
  2. DNS разрешает на ближайший edge-сервер CDN
  3. Edge проверяет наличие кэшированной копии
  4. HIT: Отдаёт напрямую с edge (быстро)
  5. MISS: Запрашивает с origin, кэширует, отдаёт

Что Тестировать

Поведение Кэша CDN

# Проверка статуса кэша CDN
curl -I https://example.com/style.css
# Ищите: CF-Cache-Status, X-Cache, Age

Мультирегиональная Задержка

Используйте WebPageTest для тестирования из нескольких точек мира.

Геоограниченный Контент

  • Пользователи из разрешённых регионов имеют доступ
  • Пользователи из ограниченных регионов видят соответствующее сообщение
  • VPN-пользователи обрабатываются корректно
  • Геодетекция использует корректный IP

Геомаршрутизация

  • Пользователи из США идут на us.api.example.com
  • Пользователи из ЕС идут на eu.api.example.com
  • Суверенитет данных: данные ЕС остаются в дата-центрах ЕС
  • Отказоустойчивость: если ЕС недоступен, трафик перенаправляется

Упражнение: Аудит CDN и Геодистрибуции

Шаг 1: Проверка Кэша CDN

# Первый запрос (ожидается MISS)
curl -I https://ваш-сайт.com/assets/main.css

# Второй запрос (ожидается HIT)
curl -I https://ваш-сайт.com/assets/main.css
РесурсПервыйВторойCache-ControlAge
CSS
JS
Изображение
HTML

Шаг 2: Мультирегиональное Тестирование

WebPageTest из 3+ точек:

ТочкаTTFBFCPLCPПолная загрузка
США Восток
Европа
Азия

Шаг 3: Тестирование Purge Кэша

  1. Зафиксируйте текущий контент кэшированного ресурса
  2. Обновите на origin
  3. Выполните purge CDN
  4. Запросите ресурс — проверьте обновлённый контент
  5. Запросите из другого региона — проверьте глобальное обновление
Решение: Типичные Проблемы CDN

Проблема 1: CDN кэширует пользовательский контент. API-ответ с данными пользователя отдавался другим. Исправление: Cache-Control: private.

Проблема 2: Purge не распространяется глобально. Обновлённый контент в США, но устаревший в Азии. Исправление: Проверять распространение во всех регионах.

Проблема 3: Обход геоограничений. Ограниченное видео закэшировано на edge разрешённого региона. Исправление: Геопроверка на edge.

Проблема 4: Устаревший кэш после деплоя. CDN отдавал старые файлы часами. Исправление: Автоматический purge в pipeline деплоя.

Ключевые Выводы

  • Тестирование CDN требует проверки кэша (HIT/MISS), мультирегиональной задержки и консистентности
  • Всегда проверяйте CDN-заголовки (CF-Cache-Status, X-Cache, Age)
  • Тестируйте из нескольких точек — сайт может работать локально, но иметь проблемы в других регионах
  • Авторизованные ответы не должны кэшироваться CDN
  • Включайте purge CDN в pipeline деплоя
  • Геоограничения должны применяться на edge, а не только на origin