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