Smart Cache Fallback
Smart Cache MirApi зберігає успішні відповіді upstream у Redis та повертає їх як екстрений fallback при збоях upstream. Це механізм рятування при збоях — не загальнодоступний кеш. Кожен запит завжди спочатку намагається звернутись до upstream; кешовані дані повертаються лише коли всі спроби провалились.
Як це працює
Section titled “Як це працює”- Перший успішний запит: MirApi пересилає до upstream і при успіху кешує тіло відповіді в Redis з налаштованим TTL.
- Наступні запити: Запит пересилається до upstream як звичайно. Кеш не повертається при успіху — тільки при збої.
- Збій upstream (всі повтори вичерпані): MirApi шукає запис у кеші. Якщо знайдено — кешована відповідь повертається з
X-Rescued: cache. Якщо ні — повертається помилка від upstream.
Ключ кешу: SHA256(ClientID + TargetURL + Method + RequestBody) — різні тіла запитів дають різні записи кешу.
Увімкнення
Section titled “Увімкнення”curl https://proxy.mirapi.io/ \ -H "X-MirApi-Key: $MIRAPI_KEY" \ -H "X-Target-URL: https://api.exchangerate.host/latest" \ -H "X-Smart-Cache: 300s"| Заголовок | Приклади | Опис |
|---|---|---|
X-Smart-Cache | 60s, 5m, 1h | TTL кешу для успішних відповідей. Приймає Go durations. |
Варіанти використання
Section titled “Варіанти використання”1. API курсів валют (Найпоширеніший)
Section titled “1. API курсів валют (Найпоширеніший)”curl https://proxy.mirapi.io/ \ -H "X-MirApi-Key: $MIRAPI_KEY" \ -H "X-Target-URL: https://api.exchangerate.host/latest?base=USD" \ -H "X-Smart-Cache: 300s"# Якщо API повертає 503 (є кешовані дані):# HTTP/1.1 200 OK# X-Rescued: cache# {"base": "USD", "rates": {"EUR": 0.9234, ...}}2. Каталог продуктів / конфігураційні дані
Section titled “2. Каталог продуктів / конфігураційні дані”curl https://proxy.mirapi.io/ \ -H "X-MirApi-Key: $MIRAPI_KEY" \ -H "X-Target-URL: https://api.yourstore.com/v1/products?category=electronics" \ -H "X-Smart-Cache: 10m" \ -H "X-Retry-Count: 2"# Кешується на 10 хвилин на унікальну комбінацію URL+тіло3. Smart Cache + Circuit Breaker
Section titled “3. Smart Cache + Circuit Breaker”При відкритому контурі — кеш повертається негайно, без виклику upstream:
curl https://proxy.mirapi.io/ \ -H "X-MirApi-Key: $MIRAPI_KEY" \ -H "X-Target-URL: https://api.exchangerate.host/latest" \ -H "X-Circuit-Breaker: on" \ -H "X-Smart-Cache: 600s" \ -H "X-Retry-Count: 2"# Нормально: upstream → кеш збережено в Redis# Контур OPEN: без виклику upstream → кеш негайно → X-Rescued: cache4. Smart Cache + Повтори
Section titled “4. Smart Cache + Повтори”Кеш перевіряється тільки після вичерпання всіх повторів:
curl -X POST https://proxy.mirapi.io/ \ -H "X-MirApi-Key: $MIRAPI_KEY" \ -H "X-Target-URL: https://api.bankapi.com/rates" \ -H "X-Smart-Cache: 1h" \ -H "X-Retry-Count: 3" \ -H "X-Retry-Delay: 500ms"# Спроба 1 → 503# Спроба 2 → 503 (після 500ms)# Спроба 3 → 503 (після 1s)# Спроба 4 → 503 (після 2s)# Всі провалились → перевірити Redis → кеш HIT → X-Rescued: cacheІндикатор кешованої відповіді
Section titled “Індикатор кешованої відповіді”HTTP/1.1 200 OKX-Rescued: cacheContent-Type: application/json
{"base": "USD", "rates": {"EUR": 0.9234, ...}}Найкращі практики
Section titled “Найкращі практики”- Завжди використовуйте Smart Cache для read-heavy ендпоінтів: курси валют →
60s–300s; каталоги →5m–30m; ембеддинги →1h–24h. - Поєднуйте з
X-Circuit-Breaker: onдля критичних API. - Для операцій запису (платежів, мутацій) забезпечте idempotency через
X-Proxy-Idempotency-Key.