Dokumentacja API
Przewodnik po buforowaniu odpowiedzi i integracji CDN
Zoptymalizuj wydajność Smart Money API dzięki inteligentnym strategiom buforowania. Poznaj nagłówki cache HTTP, walidację ETag, integrację z CDN oraz wzorce buforowania po stronie klienta, aby zmniejszyć opóźnienia i koszty transferu danych.
Opublikowano 21 marca 2026
•
16 minut czytania
•
Wydajność
Przegląd buforowania
Endpointy Smart Money API dostarczają dane rynku kryptowalut, które zmieniają się z różną częstotliwością. Niektóre dane (adresy wielorybów, stopy finansowania) aktualizują się co kilka sekund, podczas gdy inne (analiza historyczna, treści edukacyjne) pozostają statyczne przez godziny. Inteligentne buforowanie znacząco poprawia wydajność i redukuje koszty.
Smart Money API implementuje trójwarstwową strategię buforowania:
- Pamięć podręczna CDN Edge — Globalna dostawa treści z automatycznym unieważnianiem pamięci podręcznej
- Pamięć podręczna przeglądarki HTTP — Buforowanie po stronie klienta przy użyciu standardowych nagłówków HTTP
- Pamięć podręczna aplikacji — Buforowanie w pamięci dla często używanych zestawów danych
Wgląd w wydajność: Zbuforowane odpowiedzi są obsługiwane 50-100 razy szybciej niż świeże żądania API i znacząco oszczędzają przepustowość. Prawidłowo zbuforowana integracja może zmniejszyć transfer danych o 70-85%.
Każda odpowiedź Smart Money API zawiera dyrektywy cache, które informują klientów i CDN, jak długo dane pozostają aktualne. Zrozumienie tych dyrektyw i ich prawidłowa implementacja są kluczowe dla optymalnej wydajności.
Podstawy buforowania
Buforowanie HTTP działa w oparciu o nagłówki odpowiedzi, które wskazują, czy zawartość może być buforowana i na jak długo.
Nagłówek Cache-Control
Główny mechanizm kontrolujący zachowanie pamięci podręcznej. Każda odpowiedź Smart Money API zawiera nagłówek Cache-Control określający:
- max-age — Czas w sekundach, przez który odpowiedź pozostaje ważna
- public/private — Czy pośrednie pamięci podręczne mogą ją przechowywać
- must-revalidate — Czy sprawdzać świeżość przed udostępnieniem
- no-store — Nie buforować wrażliwych danych
Przykładowe nagłówki cache
Różne endpointy mają różne wymagania dotyczące buforowania:
// Dane adresów wielorybów (aktualizowane co 5 minut)
Cache-Control: public, max-age=300
ETag: "abc123def456"
// Stopy finansowania w czasie rzeczywistym (aktualizowane co sekundę)
Cache-Control: public, max-age=1
ETag: "xyz789abc123"
// Dane historyczne (niezmienne)
Cache-Control: public, max-age=86400, immutable
ETag: "static-content-v1"
Czas buforowania według typu endpointu
| Typ danych |
Czas buforowania |
Przypadek użycia |
| Finansowanie w czasie rzeczywistym |
1-5 sekund |
Handel na żywo, ustalanie wielkości pozycji |
| Ruchy wielorybów |
5 minut |
Potwierdzenie sygnałów, alerty |
| Dzienne OHLCV |
1 godzina |
Analiza techniczna, wykresy |
| Analiza historyczna |
24 godziny |
Backtesting, badania |
| Treści statyczne |
7 dni |
Dokumentacja API, przewodniki, konfiguracja |
Odbierz swój klucz API w 30 sekund
Gotowy do budowania? Odbierz darmowy klucz API (200 wywołań/dzień, bez karty) i zacznij pobierać dane o wielorybach, finansowaniu i danych on-chain w czasie rzeczywistym.
Odbierz swój klucz API →
ETag i żądania warunkowe
ETagi (znaczniki encji) zapewniają efektywny sposób walidacji zbuforowanej zawartości bez pobierania całego ciała odpowiedzi.
Jak działają ETagi
- Początkowe żądanie — Klient żąda danych, serwer odpowiada z ETag
- Przechowywanie w pamięci podręcznej — Klient buforuje odpowiedź z ETag
- Kolejne żądanie — Klient wysyła nagłówek If-None-Match z zapisanym ETag
- Walidacja — Jeśli dane są niezmienione, serwer zwraca 304 Not Modified
- Zaoszczędzona przepustowość — Brak wysłanego ciała odpowiedzi, duże oszczędności przepustowości
Implementacja ETag
// Pierwsze żądanie
GET /v1/whales/btc HTTP/1.1
// Odpowiedź zawiera ETag
HTTP/1.1 200 OK
ETag: "8a3b9c2d"
Cache-Control: public, max-age=300
Content-Type: application/json
{...response body...}
// Po wygaśnięciu pamięci podręcznej, wyślij If-None-Match
GET /v1/whales/btc HTTP/1.1
If-None-Match: "8a3b9c2d"
// Jeśli niezmienione, serwer odpowiada 304
HTTP/1.1 304 Not Modified
ETag: "8a3b9c2d"
Cache-Control: public, max-age=300
// Brak wysłanego ciała! Zaoszczędzona przepustowość
Siła ETag
ETagi mogą być silne lub słabe:
| Typ |
Format |
Przypadek użycia |
| Silny ETag |
"8a3b9c2d" |
Identyczny bajt po bajcie, używany do walidacji |
| Słaby ETag |
W/"8a3b9c2d" |
Semantycznie równoważny, dla zmian wyświetlania |
Dyrektywy Cache Control
Zrozumienie dyrektyw Cache-Control umożliwia budowanie optymalnych strategii buforowania dla Twojej aplikacji.
Referencja dyrektyw
| Dyrektywa |
Znaczenie |
Przykład |
| max-age |
Sekundy, przez które odpowiedź pozostaje świeża |
max-age=300 |
| public |
Pamięć podręczna może przechowywać i udostępniać |
public |
| private |
Pamięć podręczna tylko dla odbiorcy |
private |
| must-revalidate |
Ponowna walidacja, gdy przestarzała |
must-revalidate |
| no-cache |
Musi zostać ponownie zwalidowana przed użyciem |
no-cache |
| no-store |
Nie buforować w ogóle |
no-store |
| immutable |
Nigdy się nie zmienia, buforuj na zawsze |
immutable |
| s-maxage |
Czas trwania pamięci podręcznej CDN |
s-maxage=3600 |
Praktyczne wzorce Cache-Control
// Wzorzec 1: Pamięć podręczna przeglądarki, CDN na 1 godzinę
Cache-Control: public, max-age=300, s-maxage=3600
// Wzorzec 2: Dane użytkownika, brak pamięci podręcznej proxy
Cache-Control: private, max-age=1800
// Wzorzec 3: Zawsze świeże, zawsze sprawdzaj
Cache-Control: public, no-cache, must-revalidate
// Wzorzec 4: Niezmienialny zasób wersjonowany
Cache-Control: public, max-age=31536000, immutable
Integracja CDN
Smart Money API dostarcza odpowiedzi przez globalną sieć CDN Cloudflare, automatycznie buforując odpowiedzi w lokalizacjach brzegowych na całym świecie dla minimalnego opóźnienia.
Jak działa Smart Money CDN
- Żądanie użytkownika — Żądanie trafia do najbliższej lokalizacji brzegowej Cloudflare
- Sprawdzenie pamięci podręcznej — Lokalizacja brzegowa sprawdza, czy odpowiedź jest zapisana w pamięci podręcznej i świeża
- Trafienie w pamięć podręczną — Jeśli zapisane w pamięci podręcznej, dostarcz natychmiast z opóźnieniem <10ms
- Brak w pamięci podręcznej — Jeśli nie zapisane w pamięci podręcznej, pobierz z serwera źródłowego
- Przechowywanie i dostarczanie — Zapisz odpowiedź w pamięci podręcznej i dostarcz użytkownikowi
Konfiguracja klucza pamięci podręcznej
Cloudflare używa kluczy pamięci podręcznej do jednoznacznej identyfikacji zapisanych odpowiedzi. Domyślnie:
- Ścieżka żądania i parametry zapytania są uwzględniane
- Większość nagłówków jest ignorowana (aby zmaksymalizować trafienia w pamięć podręczną)
- Nagłówki autoryzacyjne NIE są uwzględniane (brak wycieku konta)
- Niestandardowe nagłówki mogą być uwzględnione przez nagłówek Vary
Czyszczenie pamięci podręcznej CDN
Smart Money automatycznie czyści pamięć podręczną CDN, gdy dane są aktualizowane:
// Wyczyść konkretny URL z pamięci podręcznej CDN
curl -X POST "https://api.smartmoneyapi.com/v1/cache/purge" \
-H "Authorization: Bearer token" \
-d '{
"urls": [
"https://api.smartmoneyapi.com/v1/whales/btc"
]
}'
Pomiar wydajności CDN
Sprawdź nagłówki odpowiedzi, aby zobaczyć, czy żądanie zostało obsłużone z pamięci podręcznej:
// Trafienie w pamięć podręczną z CDN edge
CF-Cache-Status: HIT
CF-RAY: 8a9b7c6d5e4f3g2h
Age: 45 // sekundy od zapisania w pamięci podręcznej
// Brak w pamięci podręcznej, pobrane z serwera źródłowego
CF-Cache-Status: MISS
Age: 0
Buforowanie po stronie klienta
Zaimplementuj buforowanie w swojej aplikacji, aby dodatkowo zmniejszyć liczbę wywołań API i poprawić responsywność.
Implementacja pamięci podręcznej przeglądarki
// Utwórz przechowywanie pamięci podręcznej
const cache = new Map();
async function fetchWithCache(url) {
// Sprawdź najpierw pamięć podręczną
const cached = cache.get(url);
if (cached && !isCacheExpired(cached)) {
return cached.data;
}
// Pobierz z API
const response = await fetch(url);
const data = await response.json();
// Przetwórz czas trwania pamięci podręcznej z nagłówków
const cacheControl = response.headers
.get('cache-control');
const maxAge = parseMaxAge(cacheControl);
// Zapisz w pamięci podręcznej
cache.set(url, {
data,
expiry: Date.now() + (maxAge * 1000)
});
return data;
}
Service Worker Caching
Dla wsparcia offline i zaawansowanych strategii buforowania użyj Service Workers:
// Buforuj odpowiedzi API za pomocą Service Worker
self.addEventListener('fetch', (event) => {
if (event.request.url.includes('api.smartmoneyapi.com')) {
// Najpierw sieć, potem pamięć podręczna
event.respondWith(
fetch(event.request)
.then(response => {
// Zaktualizuj pamięć podręczną świeżą odpowiedzią
caches.open('api-cache')
.then(cache => cache.put(
event.request, response.clone()));
return response;
})
.catch(() =>
caches.match(event.request))
);
}
});
Strategie unieważniania pamięci podręcznej
Czasami trzeba wymusić pobranie świeżych danych. Użyj tych technik:
Parametr wersji
Dodaj parametr wersji, aby unieważnić pamięć podręczną przy zmianie danych:
// Uwzględnij wersję danych lub znacznik czasu
https://api.smartmoneyapi.com/v1/whales/btc?v=1709980800
// Przy aktualizacji danych zwiększ wersję
https://api.smartmoneyapi.com/v1/whales/btc?v=1709981000
// Nowy URL = nowy wpis w pamięci podręcznej
Wymuś ponowną walidację
Zastąp pamięć podręczną Cache-Control: no-cache, gdy potrzebujesz świeżych danych:
// JavaScript: Wymuś świeże żądanie
fetch(url, {
cache: 'no-cache', // Zawsze waliduj
headers: {
'Cache-Control': 'max-age=0'
}
});
Monitorowanie wydajności pamięci podręcznej
Śledź współczynnik trafień i poprawę wydajności, aby zweryfikować strategię buforowania.
Metryki pamięci podręcznej do monitorowania
- Współczynnik trafień — Procent żądań obsłużonych z pamięci podręcznej (cel: >70%)
- Czas odpowiedzi — Średnie opóźnienie (buforowane: <50ms, niebuforowane: 100-300ms)
- Oszczędność przepustowości — Redukcja transferu danych
- Obciążenie źródła — Redukcja żądań na serwerze źródłowym
Analiza nagłówków pamięci podręcznej
// Analizuj nagłówki pamięci podręcznej odpowiedzi
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')
};
}
Najlepsze praktyki buforowania
1. Szanuj nagłówki odpowiedzi
Zawsze szanuj nagłówki Cache-Control z Smart Money API. Nie buforuj treści oznaczonych jako no-store lub no-cache.
2. Wdrażaj żądania warunkowe
Wysyłaj nagłówki If-None-Match (ETag) i If-Modified-Since przy ponownej walidacji buforowanej treści. Oszczędzaj przepustowość dzięki odpowiedziom 304.
3. Buforuj odpowiednio do typu danych
- Dane w czasie rzeczywistym (stawki finansowania): maksymalnie 1-5 sekund buforowania
- Sygnały na żywo (ruch wielorybów): 5-30 sekund buforowania
- Dane godzinowe (OHLCV): 1 godzina buforowania
- Dane historyczne: 24-godzinne buforowanie
- Treść statyczna: 7-dniowe buforowanie
4. Monitoruj skuteczność pamięci podręcznej
Śledź współczynniki trafień i poprawę opóźnień. Dostosuj TTL w zależności od wymagań dotyczących świeżości danych i wydajności pamięci podręcznej.
5. Używaj nagłówków Vary ostrożnie
Nagłówki Vary zmniejszają trafienia pamięci podręcznej, tworząc osobne wpisy. Używaj tylko wtedy, gdy jest to konieczne dla różnych poziomów uwierzytelnienia lub parametrów.
6. Buforuj na wielu warstwach
Wdrażaj buforowanie na poziomie CDN, przeglądarki i aplikacji. Każda warstwa przechwytuje żądania przed dotarciem do źródła.
Zoptymalizuj wydajność swojego API
Infrastruktura buforowania Smart Money API zapewnia odpowiedzi poniżej 100ms w skali globalnej. Wdrażaj inteligentne strategie buforowania, aby zmaksymalizować wydajność i zminimalizować koszty.
Porównaj plany
Wszystkie plany obejmują pełne buforowanie CDN. Wyższe poziomy zapewniają kontrolę pamięci podręcznej i API do czyszczenia.