Что такое TTL и где он встречается
TTL — это инструкция «через сколько считать эти данные устаревшими». Встречается в трёх основных контекстах:
Кэш (Redis, Memcached, CDN) — хранит результаты запросов или страницы. TTL определяет, как долго отдавать закэшированный ответ вместо обращения к базе данных или origin-серверу.
DNS — резолверы (провайдеры, браузеры) кэшируют DNS-записи согласно TTL. Короткий TTL = быстрое распространение изменений, но больше запросов к DNS-серверу.
HTTP-кэш — заголовки Cache-Control: max-age=N и Expires задают TTL для браузерного кэша и промежуточных прокси.
Баланс скорости и свежести
TTL — это компромисс. Высокий TTL → меньше запросов к источнику → быстрее сайт, но данные могут быть устаревшими. Низкий TTL → данные всегда свежие, но нагрузка на бэкенд растёт.
Короткий TTL: актуальность ↑, нагрузка ↑, latency ↑
Длинный TTL: производительность ↑, свежесть ↓
В e-commerce разные данные требуют разного TTL:
| Тип данных | Рекомендуемый TTL |
|---|---|
| HTML-страница категории | 5–30 минут |
| Цена и остаток товара | 1–5 минут или cache invalidation |
| Рекомендации (статические) | 15–60 минут |
| Рекомендации (real-time) | Не кэшируются |
| DNS-запись (обычный режим) | 3600–86400 секунд |
| DNS-запись (перед миграцией) | 300 секунд |
Инвалидация как альтернатива короткому TTL
Вместо того чтобы ставить TTL = 1 минута для страницы товара, можно использовать cache invalidation: при изменении цены в бэкенде система явно удаляет соответствующую запись из кэша. Следующий запрос получит свежие данные, а все промежуточные запросы — кэшированный ответ. Это сочетает высокую производительность с актуальностью данных.