Ответ
Время жизни кэша (TTL - Time To Live) задается по-разному в зависимости от его типа и реализации:
1. HTTP-кэширование (заголовки ответа сервера):
Cache-Control: max-age=3600— ресурс считается свежим 3600 секунд (1 час) с момента получения.Cache-Control: s-maxage=86400— TTL для shared-кэшей (например, CDN).Expires: Wed, 21 Oct 2025 07:28:00 GMT— абсолютная дата истечения срока действия (устаревший, но поддерживаемый метод).
2. Кэширование в приложениях (программное):
-
Python (functools.lru_cache с TTL):
from functools import lru_cache from datetime import datetime, timedelta def ttl_cache(seconds: int, maxsize: int = 128): def wrapper(func): func.cache = {} func.expiry = {} def inner(*args): now = datetime.now() if args in func.cache: if now < func.expiry[args]: return func.cache[args] else: del func.cache[args], func.expiry[args] result = func(*args) func.cache[args] = result func.expiry[args] = now + timedelta(seconds=seconds) return result return inner return wrapper @ttl_cache(seconds=60) def get_expensive_data(): # ... тяжелые вычисления return data - Redis: Установка TTL через команды
EXPIRE key secondsилиSET key value EX seconds.
3. CDN и Edge-кэши:
- TTL настраивается в правилах CDN (например, 24 часа для статических ресурсов).
Выбор TTL — это баланс между актуальностью данных, нагрузкой на источник данных и производительностью.