Documentation de l'API
Guide d'Intégration du Cache des Réponses et du CDN
Optimisez les performances de Smart Money API avec des stratégies de cache intelligentes. Apprenez les en-têtes de cache HTTP, la validation ETag, l'intégration CDN et les modèles de cache côté client pour réduire la latence et les coûts de bande passante.
Publié le 21 mars 2026
•
16 min de lecture
•
Performance
Aperçu du Cache
Les points de terminaison de Smart Money API fournissent des données de marché cryptographiques qui changent à différentes fréquences. Certaines données (adresses de baleines, taux de financement) se mettent à jour toutes les quelques secondes, tandis que d'autres (analyse historique, contenu éducatif) restent statiques pendant des heures. Le cache intelligent améliore considérablement les performances et réduit les coûts.
Smart Money API met en œuvre une stratégie de cache à trois niveaux :
- Cache CDN Edge — Livraison de contenu global avec invalidation automatique du cache
- Cache Navigateur HTTP — Cache côté client utilisant les en-têtes HTTP standard
- Cache d'Application — Cache en mémoire pour les ensembles de données fréquemment accédés
Aperçu des Performances : Les réponses en cache sont servies 50 à 100 fois plus vite que les requêtes API fraîches et économisent considérablement la bande passante. Une intégration correctement mise en cache peut réduire le transfert de données de 70 à 85 %.
Chaque réponse de Smart Money API inclut des directives de cache qui indiquent aux clients et aux CDN combien de temps les données restent valides. Comprendre ces directives et les implémenter correctement est crucial pour des performances optimales.
Fondamentaux du Cache
Le cache HTTP fonctionne sur la base d'en-têtes de réponse qui indiquent si le contenu peut être mis en cache et pour combien de temps.
En-tête Cache-Control
Le mécanisme principal pour contrôler le comportement du cache. Chaque réponse de Smart Money API inclut un en-tête Cache-Control spécifiant :
- max-age — Durée en secondes pendant laquelle la réponse reste valide
- public/private — Si les caches intermédiaires peuvent le stocker
- must-revalidate — Si la fraîcheur doit être vérifiée avant de servir
- no-store — Ne pas mettre en cache les données sensibles
Exemples d'En-têtes de Cache
Différents points de terminaison ont des besoins de cache différents :
// Données d'adresses de baleines (mises à jour toutes les 5 minutes)
Cache-Control: public, max-age=300
ETag: "abc123def456"
// Taux de financement en temps réel (mises à jour chaque seconde)
Cache-Control: public, max-age=1
ETag: "xyz789abc123"
// Données historiques (ne changent pas)
Cache-Control: public, max-age=86400, immutable
ETag: "static-content-v1"
Durée de Cache par Type de Point de Terminaison
| Type de Données |
Durée de Cache |
Cas d'Utilisation |
| Financement en Temps Réel |
1-5 secondes |
Trading en direct, dimensionnement des positions |
| Mouvements de Baleines |
5 minutes |
Confirmation de signal, alertes |
| OHLCV Quotidien |
1 heure |
Analyse technique, graphiques |
| Analyse Historique |
24 heures |
Backtesting, recherche |
| Contenu Statique |
7 jours |
Docs API, guides, configuration |
Obtenez votre clé API en 30 secondes
Prêt à construire ? Obtenez une clé API gratuite (200 appels/jour, sans carte) et commencez à récupérer des données en direct sur les baleines, le financement et les données on-chain.
Obtenez votre clé API →
ETag et Requêtes Conditionnelles
Les ETags (Entity Tags) fournissent un moyen efficace de valider le contenu en cache sans télécharger le corps complet de la réponse.
Fonctionnement des ETags
- Requête Initiale — Le client demande des données, le serveur répond avec un ETag
- Stockage en Cache — Le client met en cache la réponse avec l'ETag
- Requête Subséquente — Le client envoie l'en-tête If-None-Match avec l'ETag en cache
- Validation — Si les données n'ont pas changé, le serveur renvoie 304 Non modifié
- Bande passante économisée — Aucun corps de réponse envoyé, économie importante de bande passante
Implémentation ETag
// Première requête
GET /v1/whales/btc HTTP/1.1
// La réponse inclut un ETag
HTTP/1.1 200 OK
ETag: "8a3b9c2d"
Cache-Control: public, max-age=300
Content-Type: application/json
{...response body...}
// Après l'expiration du cache, envoyer If-None-Match
GET /v1/whales/btc HTTP/1.1
If-None-Match: "8a3b9c2d"
// Si inchangé, le serveur répond 304
HTTP/1.1 304 Not Modified
ETag: "8a3b9c2d"
Cache-Control: public, max-age=300
// Aucun corps envoyé ! Bande passante économisée
Force de l'ETag
Les ETags peuvent être forts ou faibles :
| Type |
Format |
Cas d'utilisation |
| ETag fort |
"8a3b9c2d" |
Identique octet par octet, utilisé pour la validation |
| ETag faible |
W/"8a3b9c2d" |
Sémantiquement équivalent, pour les changements d'affichage |
Directives de contrôle du cache
Comprendre les directives Cache-Control permet de construire des stratégies de cache optimales pour votre application.
Référence des directives
| Directive |
Signification |
Exemple |
| max-age |
Durée en secondes pendant laquelle la réponse reste fraîche |
max-age=300 |
| public |
Le cache peut stocker et partager |
public |
| private |
Cache uniquement pour le destinataire |
private |
| must-revalidate |
Revalider lorsque périmé |
must-revalidate |
| no-cache |
Doit être revalidé avant utilisation |
no-cache |
| no-store |
Ne pas mettre en cache du tout |
no-store |
| immutable |
Ne change jamais, cache pour toujours |
immutable |
| s-maxage |
Durée du cache CDN |
s-maxage=3600 |
Modèles pratiques de Cache-Control
// Modèle 1 : Cache navigateur, CDN pendant 1 heure
Cache-Control: public, max-age=300, s-maxage=3600
// Modèle 2 : Données par utilisateur, pas de cache proxy
Cache-Control: private, max-age=1800
// Modèle 3 : Toujours frais, toujours vérifier
Cache-Control: public, no-cache, must-revalidate
// Modèle 4 : Ressource versionnée immuable
Cache-Control: public, max-age=31536000, immutable
Intégration CDN
Smart Money API livre les réponses via le réseau CDN mondial de Cloudflare, mettant automatiquement en cache les réponses dans des emplacements edge à travers le monde pour une latence minimale.
Fonctionnement du CDN Smart Money
- Requête utilisateur — La requête atteint l'emplacement edge Cloudflare le plus proche
- Vérification du cache — L'edge vérifie si la réponse est en cache et fraîche
- Cache hit — Si en cache, servi immédiatement avec une latence <10ms
- Cache miss — Si non en cache, récupéré depuis le serveur d'origine
- Stockage et service — Met en cache la réponse et la livre à l'utilisateur
Configuration de la clé de cache
Cloudflare utilise des clés de cache pour identifier de manière unique les réponses en cache. Par défaut :
- Le chemin de la requête et les paramètres de requête sont inclus
- La plupart des en-têtes sont ignorés (pour maximiser les cache hits)
- Les en-têtes d'autorisation ne sont PAS inclus (aucune fuite de compte)
- Les en-têtes personnalisés peuvent être inclus via l'en-tête Vary
Purging CDN
Smart Money purge automatiquement le cache CDN lors des mises à jour des données :
// Purger une URL spécifique du CDN
curl -X POST "https://api.smartmoneyapi.com/v1/cache/purge" \
-H "Authorization: Bearer token" \
-d '{
"urls": [
"https://api.smartmoneyapi.com/v1/whales/btc"
]
}'
Mesure des performances CDN
Vérifiez les en-têtes de réponse pour voir si la requête a été servie depuis le cache :
// Cache hit depuis l'edge CDN
CF-Cache-Status: HIT
CF-RAY: 8a9b7c6d5e4f3g2h
Age: 45 // secondes depuis la mise en cache
// Cache miss, récupéré depuis l'origine
CF-Cache-Status: MISS
Age: 0
Cache côté client
Implémentez la mise en cache dans votre application pour réduire davantage les appels API et améliorer la réactivité.
Implémentation du cache navigateur
// Créer un stockage de cache
const cache = new Map();
async function fetchWithCache(url) {
// Vérifier d'abord le cache
const cached = cache.get(url);
if (cached && !isCacheExpired(cached)) {
return cached.data;
}
// Récupérer depuis l'API
const response = await fetch(url);
const data = await response.json();
// Analyser la durée du cache depuis les en-têtes
const cacheControl = response.headers
.get('cache-control');
const maxAge = parseMaxAge(cacheControl);
// Stocker dans le cache
cache.set(url, {
data,
expiry: Date.now() + (maxAge * 1000)
});
return data;
}
Cache du Service Worker
Pour une prise en charge hors ligne et des stratégies de cache avancées, utilisez les Service Workers :
// Mettre en cache les réponses de l'API avec le Service Worker
self.addEventListener('fetch', (event) => {
if (event.request.url.includes('api.smartmoneyapi.com')) {
// D'abord le réseau, puis le cache en secours
event.respondWith(
fetch(event.request)
.then(response => {
// Mettre à jour le cache avec la réponse fraîche
caches.open('api-cache')
.then(cache => cache.put(
event.request, response.clone()));
return response;
})
.catch(() =>
caches.match(event.request))
);
}
});
Stratégies de Cache Busting
Parfois, vous devez forcer les clients à obtenir des données fraîches. Utilisez ces techniques :
Paramètre de Version
Ajoutez un paramètre de version pour invalider les caches lorsque les données changent :
// Inclure la version des données ou un horodatage
https://api.smartmoneyapi.com/v1/whales/btc?v=1709980800
// Lorsque les données sont mises à jour, incrémentez la version
https://api.smartmoneyapi.com/v1/whales/btc?v=1709981000
// Nouvelle URL = nouvelle entrée de cache
Forcer la Revalidation
Remplacez le cache avec Cache-Control: no-cache lorsque vous avez besoin de données fraîches :
// JavaScript : Forcer une requête fraîche
fetch(url, {
cache: 'no-cache', // Toujours revalider
headers: {
'Cache-Control': 'max-age=0'
}
});
Surveillance des Performances du Cache
Suivez les taux de succès du cache et les améliorations de performance pour valider votre stratégie de cache.
Métriques de Cache à Surveiller
- Taux de Succès — Pourcentage de requêtes servies depuis le cache (objectif : >70%)
- Temps de Réponse — Latence moyenne (cache : <50ms, sans cache : 100-300ms)
- Bande Passante Économisée — Réduction du transfert de données
- Charge d'Origine — Réduction des requêtes au serveur d'origine
Analyse des En-têtes de Cache
// Analyser les en-têtes de cache de la réponse
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')
};
}
Bonnes Pratiques de Cache
1. Respecter les En-têtes de Réponse
Respectez toujours les en-têtes Cache-Control de Smart Money API. Ne mettez pas en cache le contenu marqué no-store ou no-cache.
2. Mettre en Œuvre des Requêtes Conditionnelles
Envoyez les en-têtes If-None-Match (ETag) et If-Modified-Since lors de la revalidation du contenu en cache. Économisez de la bande passante avec des réponses 304.
3. Cache Approprié par Type de Données
- Données en temps réel (taux de financement) : cache maximum de 1 à 5 secondes
- Signaux en direct (mouvements de baleines) : cache de 5 à 30 secondes
- Données horaires (OHLCV) : cache de 1 heure
- Données historiques : cache de 24 heures
- Contenu statique : cache de 7 jours
4. Surveiller l'Efficacité du Cache
Suivez les taux de succès et les améliorations de latence. Ajustez les TTL en fonction des exigences de fraîcheur des données et des performances du cache.
5. Utiliser les En-têtes Vary avec Prudence
Les en-têtes Vary réduisent les succès de cache en créant des entrées de cache distinctes. Utilisez-les uniquement lorsque nécessaire pour différents niveaux d'authentification ou paramètres.
6. Mettre en Cache à Plusieurs Niveaux
Mettez en œuvre le cache aux niveaux CDN, navigateur et application. Chaque niveau intercepte les requêtes avant d'atteindre l'origine.
Optimisez les Performances de Votre API
L'infrastructure de cache de Smart Money API garantit des réponses inférieures à 100ms à l'échelle mondiale. Mettez en œuvre des stratégies de cache intelligentes pour maximiser les performances et minimiser les coûts.
Comparer les Forfaits
Tous les forfaits incluent le cache CDN complet. Les niveaux supérieurs offrent le contrôle du cache et les API de purge.