Documentație API
Ghid de integrare a stocării în cache și CDN
Optimizați performanța Smart Money API cu strategii inteligente de stocare în cache. Aflați despre antetele HTTP de cache, validarea ETag, integrarea CDN și modelele de stocare în cache pe partea de client pentru a reduce latența și costurile de lățime de bandă.
Publicat pe 21 martie 2026
•
16 min de citit
•
Performanță
Prezentare generală a stocării în cache
Endpoint-urile Smart Money API furnizează date de piață cripto care se schimbă la frecvențe diferite. Unele date (adrese de balene, rate de finanțare) se actualizează la câteva secunde, în timp ce altele (analize istorice, conținut educațional) rămân statice ore întregi. Stocarea inteligentă în cache îmbunătățește dramatic performanța și reduce costurile.
Smart Money API implementează o strategie de stocare în cache pe trei niveluri:
- Cache CDN Edge — Livrare globală de conținut cu invalidare automată a cache-ului
- Cache HTTP Browser — Stocare în cache pe partea de client folosind antete HTTP standard
- Cache de aplicație — Stocare în memorie pentru seturi de date accesate frecvent
Perspectivă de performanță: Răspunsurile stocate în cache sunt servite de 50-100 de ori mai repede decât cererile API proaspete și economisesc semnificativ lățimea de bandă. O integrare corect stocată în cache poate reduce transferul de date cu 70-85%.
Fiecare răspuns Smart Money API include directive de cache care indică clienților și CDN-urilor cât timp rămân valabile datele. Înțelegerea acestor directive și implementarea lor corectă este crucială pentru performanța optimă.
Fundamentele stocării în cache
Stocarea în cache HTTP funcționează pe baza antetelor de răspuns care indică dacă conținutul poate fi stocat în cache și pentru cât timp.
Antet Cache-Control
Mecanismul principal pentru controlul comportamentului cache-ului. Fiecare răspuns Smart Money API include un antet Cache-Control care specifică:
- max-age — Durata în secunde în care răspunsul rămâne valid
- public/private — Dacă cache-urile intermediare îl pot stoca
- must-revalidate — Dacă trebuie verificată proaspătatea înainte de servire
- no-store — Nu stoca date sensibile în cache
Exemple de antete de cache
Diferite endpoint-uri au cerințe diferite de cache:
// Date despre adrese de balene (se actualizează la fiecare 5 minute)
Cache-Control: public, max-age=300
ETag: "abc123def456"
// Rate de finanțare în timp real (se actualizează la fiecare secundă)
Cache-Control: public, max-age=1
ETag: "xyz789abc123"
// Date istorice (nu se schimbă)
Cache-Control: public, max-age=86400, immutable
ETag: "static-content-v1"
Durata de stocare în cache după tipul de endpoint
| Tip de date |
Durata de cache |
Caz de utilizare |
| Finanțare în timp real |
1-5 secunde |
Tranzacționare live, dimensionarea pozițiilor |
| Mișcări de balene |
5 minute |
Confirmare semnale, alerte |
| OHLCV zilnic |
1 oră |
Analiză tehnică, grafice |
| Analiză istorică |
24 de ore |
Backtesting, cercetare |
| Conținut static |
7 zile |
Documentație API, ghiduri, configurare |
Obțineți cheia API în 30 de secunde
Sunteți gata să construiți? Obțineți o cheie API gratuită (50 de apeluri/zi, fără card) și începeți să preluați date live despre balene, finanțare și on-chain.
Obțineți cheia API →
ETag și cereri condiționate
ETag-urile (Etichete de entitate) oferă o modalitate eficientă de a valida conținutul stocat în cache fără a descărca întregul corp al răspunsului.
Cum funcționează ETag-urile
- Cerere inițială — Clientul solicită date, serverul răspunde cu ETag
- Stocare în cache — Clientul stochează răspunsul cu ETag
- Cerere ulterioară — Clientul trimite antetul If-None-Match cu ETag-ul cache-uit
- Validare — Dacă datele sunt neschimbate, serverul returnează 304 Not Modified
- Lățime de bandă economisită — Nu se trimite corpul răspunsului, economisire mare de lățime de bandă
Implementarea ETag
// Prima cerere
GET /v1/whales/btc HTTP/1.1
// Răspunsul include ETag
HTTP/1.1 200 OK
ETag: "8a3b9c2d"
Cache-Control: public, max-age=300
Content-Type: application/json
{...corpul răspunsului...}
// După expirarea cache-ului, trimite If-None-Match
GET /v1/whales/btc HTTP/1.1
If-None-Match: "8a3b9c2d"
// Dacă este neschimbat, serverul răspunde cu 304
HTTP/1.1 304 Not Modified
ETag: "8a3b9c2d"
Cache-Control: public, max-age=300
// Nu se trimite corpul! Lățime de bandă economisită
Puterea ETag
ETag-urile pot fi puternice sau slabe:
| Tip |
Format |
Caz de utilizare |
| ETag Puternic |
"8a3b9c2d" |
Identic byte-cu-byte, utilizat pentru validare |
| ETag Slab |
W/"8a3b9c2d" |
Echivalent semantic, pentru modificări de afișare |
Directive de Control al Cache-ului
Înțelegerea directivelor Cache-Control permite construirea unor strategii optime de caching pentru aplicația ta.
Referință de Directive
| Directivă |
Semnificație |
Exemplu |
| max-age |
Secunde în care răspunsul rămâne proaspăt |
max-age=300 |
| public |
Cache-ul poate stoca și partaja |
public |
| private |
Cache doar pentru destinatar |
private |
| must-revalidate |
Revalidare când este învechit |
must-revalidate |
| no-cache |
Trebuie revalidat înainte de utilizare |
no-cache |
| no-store |
Nu stoca în cache deloc |
no-store |
| immutable |
Nu se schimbă niciodată, cache pentru totdeauna |
immutable |
| s-maxage |
Durata cache-ului CDN |
s-maxage=3600 |
Modele Practice de Control al Cache-ului
// Model 1: Cache browser, CDN pentru 1 oră
Cache-Control: public, max-age=300, s-maxage=3600
// Model 2: Date per utilizator, fără cache proxy
Cache-Control: private, max-age=1800
// Model 3: Mereu proaspăt, mereu verificat
Cache-Control: public, no-cache, must-revalidate
// Model 4: Resursă versionată imuabilă
Cache-Control: public, max-age=31536000, immutable
Integrare CDN
Smart Money API livrează răspunsuri prin rețeaua globală CDN a Cloudflare, stocând automat răspunsurile în locații de margine din întreaga lume pentru o latență minimă.
Cum Funcționează CDN-ul Smart Money
- Cerere Utilizator — Cererea ajunge la cea mai apropiată locație de margine Cloudflare
- Verificare Cache — Marginea verifică dacă răspunsul este cache-uit și proaspăt
- Cache Hit — Dacă este cache-uit, se servește imediat cu o latență <10ms
- Cache Miss — Dacă nu este cache-uit, se preia de la serverul de origine
- Stocare și Servire — Se stochează răspunsul și se livrează utilizatorului
Configurarea Cheii de Cache
Cloudflare utilizează chei de cache pentru a identifica unic răspunsurile cache-uite. În mod implicit:
- Calea cererii și parametrii de interogare sunt incluși
- Majoritatea antetelor sunt ignorate (pentru a maximiza hit-urile de cache)
- Antetele de autorizare NU sunt incluse (fără scurgere de cont)
- Antete personalizate pot fi incluse prin antetul Vary
Purjare CDN
Smart Money purjează automat cache-ul CDN când datele se actualizează:
// Purjează un URL specific din CDN
curl -X POST "https://api.smartmoneyapi.com/v1/cache/purge" \
-H "Authorization: Bearer token" \
-d '{
"urls": [
"https://api.smartmoneyapi.com/v1/whales/btc"
]
}'
Măsurarea Performanței CDN
Verifică antetele răspunsului pentru a vedea dacă cererea a fost servită din cache:
// Cache hit de la marginea CDN
CF-Cache-Status: HIT
CF-RAY: 8a9b7c6d5e4f3g2h
Age: 45 // secunde de la cache-uit
// Cache miss, preluat de la origine
CF-Cache-Status: MISS
Age: 0
Cache pe partea Clientului
Implementează caching în aplicația ta pentru a reduce apelurile API și a îmbunătăți responsivitatea.
Implementarea Cache-ului în Browser
// Creează stocarea cache
const cache = new Map();
async function fetchWithCache(url) {
// Verifică mai întâi cache-ul
const cached = cache.get(url);
if (cached && !isCacheExpired(cached)) {
return cached.data;
}
// Obține datele de la API
const response = await fetch(url);
const data = await response.json();
// Extrage durata cache-ului din antete
const cacheControl = response.headers
.get('cache-control');
const maxAge = parseMaxAge(cacheControl);
// Stochează în cache
cache.set(url, {
data,
expiry: Date.now() + (maxAge * 1000)
});
return data;
}
Caching cu Service Worker
Pentru suport offline și strategii avansate de caching, folosește Service Workers:
// Cachează răspunsurile API cu Service Worker
self.addEventListener('fetch', (event) => {
if (event.request.url.includes('api.smartmoneyapi.com')) {
// Mai întâi rețea, apoi cache
event.respondWith(
fetch(event.request)
.then(response => {
// Actualizează cache-ul cu răspunsul nou
caches.open('api-cache')
.then(cache => cache.put(
event.request, response.clone()));
return response;
})
.catch(() =>
caches.match(event.request))
);
}
});
Strategii de Cache Busting
Uneori trebuie să forțezi clienții să obțină date proaspete. Folosește aceste tehnici:
Parametru de Versiune
Adaugă un parametru de versiune pentru a invalida cache-urile când datele se schimbă:
// Include versiunea datelor sau timestamp
https://api.smartmoneyapi.com/v1/whales/btc?v=1709980800
// Când datele se actualizează, incrementează versiunea
https://api.smartmoneyapi.com/v1/whales/btc?v=1709981000
// URL nou = intrare nouă în cache
Forțează Revalidarea
Suprascrie cache-ul cu Cache-Control: no-cache când ai nevoie de date proaspete:
// JavaScript: Forțează cererea proaspătă
fetch(url, {
cache: 'no-cache', // Revalidează întotdeauna
headers: {
'Cache-Control': 'max-age=0'
}
});
Monitorizarea Performanței Cache-ului
Urmărește ratele de hit și îmbunătățirile de performanță pentru a valida strategia de caching.
Metrici de Monitorizat pentru Cache
- Rată de Hit — Procentul de cereri servite din cache (țintă: >70%)
- Timp de Răspuns — Latența medie (cache: <50ms, fără cache: 100-300ms)
- Lățime de Bandă Economisită — Reducerea transferului de date
- Încărcarea Originii — Reducerea cererilor la serverul de origine
Analizarea Antetelor de Cache
// Analizează antetele de cache ale răspunsurilor
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')
};
}
Practici Recomandate pentru Caching
1. Respectă Antetele de Răspuns
Respectă întotdeauna antetele Cache-Control de la Smart Money API. Nu cachează conținut marcat ca no-store sau no-cache.
2. Implementează Cereri Condiționale
Trimite If-None-Match (ETag) și If-Modified-Since când revalidezi conținutul cache-uit. Economisește lățime de bandă cu răspunsuri 304.
3. Cachează Adecvat după Tipul de Date
- Date în timp real (rate de funding): maxim 1-5 secunde cache
- Semnal live (mișcarea balenelor): 5-30 secunde cache
- Date orare (OHLCV): 1 oră cache
- Date istorice: 24 de ore cache
- Conținut static: 7 zile cache
4. Monitorizează Eficiența Cache-ului
Urmărește ratele de hit și îmbunătățirile de latență. Ajustează TTL-urile în funcție de cerințele de proaspătate a datelor și performanța cache-ului.
5. Folosește Antetele Vary cu Grijă
Antetele Vary reduc hit-urile de cache creând intrări separate în cache. Folosește-le doar când este necesar pentru diferite niveluri de autentificare sau parametri.
6. Cachează la Mai Multe Niveluri
Implementează caching la nivel de CDN, browser și aplicație. Fiecare nivel prinde cereri înainte de a ajunge la origine.
Optimizează Performanța API-ului
Infrastructura de caching a Smart Money API asigură răspunsuri sub 100ms la scară globală. Implementează strategii inteligente de caching pentru a maximiza performanța și a minimiza costurile.
Compară Planurile
Toate planurile includ caching complet pe CDN. Nivelurile superioare oferă control și API-uri de purjare pentru cache.