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:

Nagłówki odpowiedzi
// 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 →

Nagłówki cache HTTP

Odpowiedzi Smart Money API zawierają kilka nagłówków związanych z buforowaniem, które współpracują, aby zmaksymalizować wydajność przy zachowaniu świeżości danych.

Cache-Control: Główny nagłówek

Kontroluje zachowanie buforowania dla przeglądarek i pośrednich pamięci podręcznych:

Dyrektywy Cache-Control
// Dane publiczne, buforowane przez 5 minut
Cache-Control: public, max-age=300
// Dane prywatne, buforowane tylko w przeglądarce
Cache-Control: private, max-age=3600
// Treści niezmienne, buforowane na zawsze
Cache-Control: public, max-age=31536000, immutable
// Zawsze weryfikuj przed udostępnieniem
Cache-Control: public, max-age=0, must-revalidate
// Nie buforuj wrażliwych danych
Cache-Control: private, no-store, no-cache

Nagłówek Expires (starsza wersja)

Dla starszych klientów Smart Money zapewnia również nagłówek Expires (HTTP/1.0):

Nagłówek Expires
// Bezwzględny czas wygaśnięcia
Expires: Wed, 22 Mar 2026 14:30:00 GMT
// max-age w Cache-Control ma pierwszeństwo w HTTP/1.1

Nagłówek Last-Modified

Wskazuje, kiedy zawartość była ostatnio aktualizowana, umożliwiając żądania warunkowe:

Użycie Last-Modified
// Odpowiedź zawiera Last-Modified
Last-Modified: Wed, 21 Mar 2026 10:15:30 GMT
// Klient weryfikuje z If-Modified-Since
If-Modified-Since: Wed, 21 Mar 2026 10:15:30 GMT
// Jeśli niezmienione, serwer odpowiada 304 Not Modified
HTTP/1.1 304 Not Modified

Nagłówek Vary

Informuje pamięci podręczne, które nagłówki żądań wpływają na odpowiedź (uwierzytelnianie, parametry):

Nagłówek Vary
// Odpowiedź zależy od uwierzytelnienia i symboli
Vary: Authorization, X-Symbols
// Pamięci podręczne przechowują osobne wersje dla różnych wartości

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

  1. Początkowe żądanie — Klient żąda danych, serwer odpowiada z ETag
  2. Przechowywanie w pamięci podręcznej — Klient buforuje odpowiedź z ETag
  3. Kolejne żądanie — Klient wysyła nagłówek If-None-Match z zapisanym ETag
  4. Walidacja — Jeśli dane są niezmienione, serwer zwraca 304 Not Modified
  5. Zaoszczędzona przepustowość — Brak wysłanego ciała odpowiedzi, duże oszczędności przepustowości

Implementacja ETag

Początkowe żądanie i odpowiedź
// 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...}
Warunkowa ponowna walidacja
// 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

Typowe wzorce
// 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

  1. Żądanie użytkownika — Żądanie trafia do najbliższej lokalizacji brzegowej Cloudflare
  2. Sprawdzenie pamięci podręcznej — Lokalizacja brzegowa sprawdza, czy odpowiedź jest zapisana w pamięci podręcznej i świeża
  3. Trafienie w pamięć podręczną — Jeśli zapisane w pamięci podręcznej, dostarcz natychmiast z opóźnieniem <10ms
  4. Brak w pamięci podręcznej — Jeśli nie zapisane w pamięci podręcznej, pobierz z serwera źródłowego
  5. 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:

Ręczne czyszczenie pamięci podręcznej
// 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:

Nagłówki odpowiedzi
// 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

Buforowanie JavaScript
// 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:

Service Worker
// 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:

Wersjonowane URL-e
// 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:

Wymuś świeże dane
// 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

Skrypt analizy 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.

Powiązane zasoby

Rozpocznij za darmo — 200 wywołań/dzień, bez karty

Otrzymuj dane o przepływie wielorybów, finansowaniu, otwartym zainteresowaniu i danych on-chain z 3 giełd w jednym API. Darmowy poziom, bez karty kredytowej, aktualizuj w dowolnym momencie.

Rozpocznij za darmo →
Wypróbuj konsolę API na żywo → (konto nie jest wymagane)