Как Работают CDN
CDN — распределённая сеть серверов, кэширующая и доставляющая контент из точек, близких к пользователям. Популярные провайдеры: Cloudflare, AWS CloudFront, Fastly, Akamai.
Поток Запроса CDN
- Пользователь запрашивает
https://example.com/image.jpg - DNS разрешает на ближайший edge-сервер CDN
- Edge проверяет наличие кэшированной копии
- HIT: Отдаёт напрямую с edge (быстро)
- 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-Control | Age |
|---|---|---|---|---|
| CSS | ||||
| JS | ||||
| Изображение | ||||
| HTML |
Шаг 2: Мультирегиональное Тестирование
WebPageTest из 3+ точек:
| Точка | TTFB | FCP | LCP | Полная загрузка |
|---|---|---|---|---|
| США Восток | ||||
| Европа | ||||
| Азия |
Шаг 3: Тестирование Purge Кэша
- Зафиксируйте текущий контент кэшированного ресурса
- Обновите на origin
- Выполните purge CDN
- Запросите ресурс — проверьте обновлённый контент
- Запросите из другого региона — проверьте глобальное обновление
Решение: Типичные Проблемы 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