1.8 KiB
1.8 KiB
ADR-007: Двухуровневое кеширование (backend + frontend)
Статус: Accepted
Дата: 2026-06-13
Участники решения: Architect
Контекст
Данные MOEX имеют задержку 15 минут. Кеширование на одном уровне (только бэкенд или только фронтенд) неоптимально:
- Только бэкенд: каждый пользователь создаёт запрос к серверу
- Только фронтенд: нет централизованного кеша, не защищает MOEX от повторных запросов
Решение
Внедрить два уровня кеширования:
-
Backend (in-memory cache-manager): централизованное кеширование ответов от MOEX. Предотвращает повторные запросы к MOEX от разных пользователей.
-
Frontend (TanStack Query staleTime): предотвращает повторные запросы к бэкенду при навигации или монтировании компонентов.
TTL согласованы (см. Caching Strategy).
Cache-Control заголовки в HTTP-ответах для промежуточных proxy/CDN (опционально).
Последствия
- Избыточность intentional: resilience при отказе одного уровня
- TanStack Query staleTime = backend TTL (нет лишних запросов)
- При рестарте бэкенда фронт всё ещё имеет данные в memory cache
- Небольшое увеличение memory на фронте (приемлемо для SPA)