Кэширование CDN: Стратегия распределения CloudFront
Эта статья объясняет, как мы используем CDN CloudFront для кэширования контента и повышения глобальной производительности.
Проблема: Глобальная задержка
Пользователи заходят на наш сайт со всего мира:
-
Индия: задержка 50 мс
-
США: задержка 200 мс
-
Европа: задержка 250 мс
-
Азия: задержка 150 мс
Обслуживание всего трафика из Индии приводит к медленной загрузке страниц для международных пользователей.
Решение: CDN CloudFront
CloudFront: Сеть доставки контента AWS
Пограничные локации: 400+ локаций по всему миру
Преимущество: Контент доставляется из ближайшей локации
Что кэшируется
Статические ресурсы (Долгий TTL)
Контент: Изображения, CSS, JavaScript, шрифты
TTL: 1 год
Путь: /s/*
Преимущество: Редко меняется, кэшировать агрессивно
Страницы товаров (Средний TTL)
Контент: Спецификации товаров, изображения
TTL: 1 час
Путь: /p/*
Преимущество: Баланс актуальности и производительности
Страницы запросов (Короткий TTL)
Контент: Результаты поиска, фильтрованные представления
TTL: 5 минут
Путь: /q/*
Преимущество: Частые обновления, короткий кэш
Статьи (Долгий TTL)
Контент: Техническая документация
TTL: 24 часа
Путь: /a/*
Преимущество: Редко меняется
Что НЕ кэшируется
Динамический контент:
-
Результаты поиска (
/q/?q=<запрос>) -
Персонализированный контент (корзина, аккаунт)
-
API-эндпоинты (
/api/*)
Причина: Должен быть актуальным, пользовательским
Поведение кэша
Ключ кэша
CloudFront использует URL как ключ кэша:
Одинаковый URL: Обслуживается из кэша
Разный URL: Новая запись в кэше
Параметры запроса: Включаются в ключ (кроме параметров отслеживания)
Заголовки кэша
Исходный сервер устанавливает заголовки кэша:
Cache-Control: public, max-age=3600
public: Может кэшироваться CDN
max-age: Длительность кэширования в секундах
Инвалидация кэша
Вручную: Создать запрос на инвалидацию
Автоматически: Дождаться истечения TTL
Стоимость: Первые 1000 путей бесплатно в месяц
Смотрите: CACHE_INVALIDATION_RULE.md для политики
Защита источника
CDN защищает исходный сервер:
Поглощение трафика: CDN обрабатывает всплески трафика
Смягчение DDoS: Фильтрует вредоносный трафик
Ограничение скорости: Предотвращает перегрузку источника
Преимущество: Источник остается отзывчивым
SSL/TLS
Сертификат: AWS Certificate Manager
Протокол: TLS 1.2+
Преимущество: Зашифрованный трафик, бесплатный сертификат
Сжатие
Gzip: Включено для текстового контента
Brotli: Включено для современных браузеров
Преимущество: Более быстрая загрузка, меньшая пропускная способность
Географические ограничения
Нет: Доступно по всему миру
Преимущество: Глобальный охват
Мониторинг
Метрики:
-
Процент попаданий в кэш
-
Запросы к источнику
-
Процент ошибок
-
Задержка по регионам
CloudWatch: Сервис мониторинга AWS
Оптимизация затрат
Процент попаданий в кэш: Выше = ниже затраты
Запросы к источнику: Меньше = ниже затраты
Передача данных: Кэшированные = дешевле
Преимущество: CDN снижает затраты на инфраструктуру
Ссылки
Сервисы AWS
-
CloudFront - Документация по AWS CDN
-
Certificate Manager - SSL сертификаты
Связанные статьи
- Многосерверная архитектура - CDN в архитектуре
Итог
CDN CloudFront улучшает глобальную производительность:
Кэшируемый контент:
-
✅ Статические ресурсы (TTL 1 год)
-
✅ Страницы товаров (TTL 1 час)
-
✅ Страницы запросов (TTL 5 минут)
-
✅ Статьи (TTL 24 часа)
Не кэшируется:
-
✅ Динамический поиск
-
✅ Персонализированный контент
-
✅ API-эндпоинты
Преимущества:
-
✅ Меньшая задержка (пограничные локации)
-
✅ Защита источника (поглощение трафика)
-
✅ Смягчение DDoS
-
✅ Снижение затрат (меньше запросов к источнику)
Функции:
-
✅ Шифрование SSL/TLS
-
✅ Сжатие Gzip/Brotli
-
✅ Глобальная доступность
Эта стратегия CDN балансирует производительность, актуальность и стоимость.