Документація API
Посібник із кешування відповідей та інтеграції CDN
Оптимізуйте продуктивність Smart Money API за допомогою розумних стратегій кешування. Дізнайтеся про HTTP-заголовки кешу, валідацію ETag, інтеграцію з CDN та шаблони кешування на стороні клієнта, щоб зменшити затримки та витрати на пропускну здатність.
Опубліковано 21 березня 2026 року
•
16 хв читання
•
Продуктивність
Огляд кешування
Кінцеві точки Smart Money API надають дані ринку криптовалют, які змінюються з різною частотою. Деякі дані (адреси китів, ставки фінансування) оновлюються кожні кілька секунд, тоді як інші дані (історичний аналіз, навчальний контент) залишаються статичними протягом годин. Розумне кешування значно покращує продуктивність і знижує витрати.
Smart Money API реалізує трирівневу стратегію кешування:
- Кеш CDN Edge — Глобальна доставка контенту з автоматичним інвелідацією кешу
- HTTP-кеш браузера — Кешування на стороні клієнта з використанням стандартних HTTP-заголовків
- Кеш додатку — Кешування в оперативній пам’яті для часто використовуваних наборів даних
Інсайт продуктивності: Кешовані відповіді обробляються у 50-100 разів швидше, ніж нові запити до API, і значно економлять пропускну здатність. Правильно кешована інтеграція може зменшити передачу даних на 70-85%.
Кожна відповідь Smart Money API містить директиви кешу, які повідомляють клієнтам і CDN, як довго дані залишаються дійсними. Розуміння цих директив і їх правильне застосування є ключовим для оптимальної продуктивності.
Основи кешування
HTTP-кешування працює на основі заголовків відповідей, які вказують, чи можна кешувати контент і як довго.
Заголовок Cache-Control
Основний механізм контролю поведінки кешу. Кожна відповідь Smart Money API містить заголовок Cache-Control, який визначає:
- max-age — Тривалість у секундах, протягом якої відповідь залишається дійсною
- public/private — Чи можуть проміжні кеші зберігати її
- must-revalidate — Чи потрібно перевіряти свіжість перед наданням
- no-store — Не кешувати чутливі дані
Приклади заголовків кешу
Різні кінцеві точки мають різні вимоги до кешування:
// Дані адрес китів (оновлюються кожні 5 хвилин)
Cache-Control: public, max-age=300
ETag: "abc123def456"
// Ставки фінансування в реальному часі (оновлюються кожну секунду)
Cache-Control: public, max-age=1
ETag: "xyz789abc123"
// Історичні дані (не змінюються)
Cache-Control: public, max-age=86400, immutable
ETag: "static-content-v1"
Тривалість кешування за типом кінцевої точки
| Тип даних |
Тривалість кешування |
Випадок використання |
| Ставки фінансування в реальному часі |
1-5 секунд |
Трейдинг у реальному часі, розміщення позицій |
| Рухи китів |
5 хвилин |
Підтвердження сигналів, сповіщення |
| Щоденні дані OHLCV |
1 година |
Технічний аналіз, графіки |
| Історичний аналіз |
24 години |
Бектестинг, дослідження |
| Статичний контент |
7 днів |
Документація API, посібники, конфігурація |
Отримайте свій API-ключ за 30 секунд
Готові будувати? Отримайте безкоштовний API-ключ (100 викликів/день, без картки) і почніть отримувати дані про кити, фінансування та ончейн-дані в реальному часі.
Отримати API-ключ →
ETag та умовні запити
ETags (Entity Tags) забезпечують ефективний спосіб перевірки кешованого контенту без завантаження повного тіла відповіді.
Як працюють ETags
- Початковий запит — Клієнт запитує дані, сервер відповідає з ETag
- Зберігання в кеші — Клієнт кешує відповідь разом з ETag
- Наступний запит — Клієнт надсилає заголовок If-None-Match із збереженим ETag
- Валідація — Якщо дані не змінилися, сервер повертає 304 Not Modified
- Збережено пропускну здатність — Тіло відповіді не надсилається, що значно зменшує використання пропускної здатності
Реалізація ETag
// Перший запит
GET /v1/whales/btc HTTP/1.1
// Відповідь включає ETag
HTTP/1.1 200 OK
ETag: "8a3b9c2d"
Cache-Control: public, max-age=300
Content-Type: application/json
{...response body...}
// Після закінчення терміну дії кешу, надсилається If-None-Match
GET /v1/whales/btc HTTP/1.1
If-None-Match: "8a3b9c2d"
// Якщо дані не змінилися, сервер повертає 304
HTTP/1.1 304 Not Modified
ETag: "8a3b9c2d"
Cache-Control: public, max-age=300
// Тіло відповіді не надсилається! Пропускна здатність збережена
Сила ETag
ETags можуть бути сильними або слабкими:
| Тип |
Формат |
Випадок використання |
| Сильний ETag |
"8a3b9c2d" |
Байт-в-байт ідентичний, використовується для валідації |
| Слабкий ETag |
W/"8a3b9c2d" |
Семантично еквівалентний, для відображення змін |
Директиви Cache Control
Розуміння директив Cache-Control дозволяє створювати оптимальні стратегії кешування для вашого додатку.
Довідник директив
| Директива |
Значення |
Приклад |
| max-age |
Секунди, протягом яких відповідь залишається свіжою |
max-age=300 |
| public |
Кеш може зберігатися та ділитися |
public |
| private |
Кеш лише для отримувача |
private |
| must-revalidate |
Перевіряти, коли застаріла |
must-revalidate |
| no-cache |
Потрібно перевірити перед використанням |
no-cache |
| no-store |
Не кешувати взагалі |
no-store |
| immutable |
Ніколи не змінюється, кешувати назавжди |
immutable |
| s-maxage |
Тривалість кешування CDN |
s-maxage=3600 |
Практичні шаблони Cache-Control
// Шаблон 1: Кеш браузера, CDN на 1 годину
Cache-Control: public, max-age=300, s-maxage=3600
// Шаблон 2: Дані для кожного користувача, без кешування проксі
Cache-Control: private, max-age=1800
// Шаблон 3: Завжди свіжі дані, завжди перевіряти
Cache-Control: public, no-cache, must-revalidate
// Шаблон 4: Незмінний версійний ресурс
Cache-Control: public, max-age=31536000, immutable
Інтеграція з CDN
Smart Money API доставляє відповіді через глобальну мережу CDN Cloudflare, автоматично кешуючи відповіді на краях світу для мінімальної затримки.
Як працює Smart Money CDN
- Запит користувача — Запит потрапляє до найближчого краю Cloudflare
- Перевірка кешу — Край перевіряє, чи відповідь кешована та свіжа
- Попадання в кеш — Якщо кешована, відповідь надається негайно з затримкою <10 мс
- Промах кешу — Якщо не кешована, дані отримуються з оригінального сервера
- Зберігання та надання — Відповідь кешується та доставляється користувачу
Конфігурація ключа кешу
Cloudflare використовує ключі кешу для унікальної ідентифікації кешованих відповідей. За замовчуванням:
- Шлях запиту та параметри запиту включені
- Більшість заголовків ігноруються (для максимізації попадань у кеш)
- Заголовки авторизації НЕ включені (немає витоку облікових даних)
- Користувацькі заголовки можуть бути включені через заголовок Vary
Очищення CDN
Smart Money автоматично очищує кеш CDN при оновленні даних:
// Очистити конкретний URL з CDN
curl -X POST "https://api.smartmoneyapi.com/v1/cache/purge" \
-H "Authorization: Bearer token" \
-d '{
"urls": [
"https://api.smartmoneyapi.com/v1/whales/btc"
]
}'
Вимірювання продуктивності CDN
Перевірте заголовки відповіді, щоб дізнатися, чи був запит обслужений з кешу:
// Попадання в кеш з краю CDN
CF-Cache-Status: HIT
CF-RAY: 8a9b7c6d5e4f3g2h
Age: 45 // секунд з моменту кешування
// Промах кешу, дані отримані з оригінального сервера
CF-Cache-Status: MISS
Age: 0
Кешування на стороні клієнта
Реалізуйте кешування у вашому додатку, щоб ще більше зменшити кількість викликів API та покращити швидкодію.
Реалізація кешування в браузері
// Створення сховища кешу
const cache = new Map();
async function fetchWithCache(url) {
// Спочатку перевірити кеш
const cached = cache.get(url);
if (cached && !isCacheExpired(cached)) {
return cached.data;
}
// Отримати з API
const response = await fetch(url);
const data = await response.json();
// Парсинг тривалості кешування з заголовків
const cacheControl = response.headers
.get('cache-control');
const maxAge = parseMaxAge(cacheControl);
// Зберегти в кеші
cache.set(url, {
data,
expiry: Date.now() + (maxAge * 1000)
});
return data;
}
Кешування Service Worker
Для підтримки офлайн-режиму та розширених стратегій кешування використовуйте Service Workers:
// Кешування відповідей API за допомогою Service Worker
self.addEventListener('fetch', (event) => {
if (event.request.url.includes('api.smartmoneyapi.com')) {
// Спочатку мережа, потім кеш
event.respondWith(
fetch(event.request)
.then(response => {
// Оновити кеш свіжою відповіддю
caches.open('api-cache')
.then(cache => cache.put(
event.request, response.clone()));
return response;
})
.catch(() =>
caches.match(event.request))
);
}
});
Стратегії оновлення кешу
Іноді потрібно змусити клієнтів отримувати свіжі дані. Використовуйте такі методи:
Параметр версії
Додайте параметр версії, щоб інвалідувати кеш при зміні даних:
// Включити версію даних або часову мітку
https://api.smartmoneyapi.com/v1/whales/btc?v=1709980800
// При оновленні даних збільште версію
https://api.smartmoneyapi.com/v1/whales/btc?v=1709981000
// Новий URL = новий запис у кеші
Примусове оновлення
Перевизначте кеш за допомогою Cache-Control: no-cache, коли потрібні свіжі дані:
// JavaScript: Примусовий новий запит
fetch(url, {
cache: 'no-cache', // Завжди ревалідувати
headers: {
'Cache-Control': 'max-age=0'
}
});
Моніторинг продуктивності кешу
Відстежуйте частоту попадань у кеш та покращення продуктивності, щоб перевірити свою стратегію кешування.
Метрики кешу для моніторингу
- Частота попадань — Відсоток запитів, обслужених з кешу (ціль: >70%)
- Час відповіді — Середня затримка (кешована: <50мс, некешована: 100-300мс)
- Збережена пропускна здатність — Зменшення обсягу переданих даних
- Навантаження на джерело — Зменшення запитів до сервера джерела
Аналіз заголовків кешу
// Аналіз заголовків кешу відповіді
async function analyzeCache(url) {
const response = await fetch(url);
return {
cacheControl: response.headers
.get('cache-control'),
etag: response.headers.get('etag'),
age: response.headers.get('age'),
cfStatus: response.headers
.get('cf-cache-status'),
contentLength:
response.headers.get('content-length')
};
}
Найкращі практики кешування
1. Поважайте заголовки відповідей
Завжди поважайте заголовки Cache-Control від Smart Money API. Не кешуйте вміст, позначений як no-store або no-cache.
2. Реалізуйте умовні запити
Надсилайте заголовки If-None-Match (ETag) та If-Modified-Since при ревалідації кешованого вмісту. Зберігайте пропускну здатність за допомогою відповідей 304.
3. Кешуйте відповідно до типу даних
- Дані в реальному часі (ставки фінансування): максимальний кеш 1-5 секунд
- Живі сигнали (рух китів): кеш 5-30 секунд
- Щогодинні дані (OHLCV): кеш 1 година
- Історичні дані: кеш 24 години
- Статичний вміст: кеш 7 днів
4. Відстежуйте ефективність кешу
Відстежуйте частоту попадань у кеш та покращення затримки. Коригуйте TTL на основі вимог до свіжості даних та продуктивності кешу.
5. Використовуйте заголовки Vary обережно
Заголовки Vary зменшують кількість попадань у кеш, створюючи окремі записи кешу. Використовуйте лише тоді, коли це необхідно для різних рівнів автентифікації або параметрів.
6. Кешуйте на кількох рівнях
Реалізуйте кешування на рівнях CDN, браузера та програми. Кожен рівень перехоплює запити перед зверненням до джерела.
Оптимізуйте продуктивність вашого API
Інфраструктура кешування Smart Money API забезпечує відповіді менше 100 мс у глобальному масштабі. Реалізуйте розумні стратегії кешування, щоб максимізувати продуктивність і мінімізувати витрати.
Порівняйте плани
Усі плани включають повне кешування CDN. Вищі рівні надають контроль кешу та API очищення.