Что такое 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: при изменении цены в бэкенде система явно удаляет соответствующую запись из кэша. Следующий запрос получит свежие данные, а все промежуточные запросы — кэшированный ответ. Это сочетает высокую производительность с актуальностью данных.