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 :

En-têtes de Réponse
// 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 →

En-têtes de Cache HTTP

Les réponses de Smart Money API incluent plusieurs en-têtes liés au cache travaillant ensemble pour maximiser les performances tout en maintenant la fraîcheur des données.

Cache-Control : L'En-tête Principal

Contrôle le comportement du cache pour les navigateurs et les caches intermédiaires :

Directives Cache-Control
// Données publiques, cache pendant 5 minutes
Cache-Control: public, max-age=300
// Données privées, cache uniquement dans le navigateur
Cache-Control: private, max-age=3600
// Contenu immuable, cache pour toujours
Cache-Control: public, max-age=31536000, immutable
// Toujours revalider avant de servir
Cache-Control: public, max-age=0, must-revalidate
// Ne pas mettre en cache les données sensibles
Cache-Control: private, no-store, no-cache

En-tête Expires (Hérité)

Pour les clients plus anciens, Smart Money fournit également l'en-tête Expires (HTTP/1.0) :

En-tête Expires
// Heure d'expiration absolue
Expires: Wed, 22 Mar 2026 14:30:00 GMT
// max-age de Cache-Control prend la priorité en HTTP/1.1

En-tête Last-Modified

Indique quand le contenu a été mis à jour pour la dernière fois, permettant des requêtes conditionnelles :

Utilisation de Last-Modified
// La réponse inclut Last-Modified
Last-Modified: Wed, 21 Mar 2026 10:15:30 GMT
// Le client revalide avec If-Modified-Since
If-Modified-Since: Wed, 21 Mar 2026 10:15:30 GMT
// Si inchangé, le serveur répond 304 Not Modified
HTTP/1.1 304 Not Modified

En-tête Vary

Indique aux caches quels en-têtes de requête affectent la réponse (authentification, paramètres) :

En-tête Vary
// La réponse varie selon l'authentification et les symboles
Vary: Authorization, X-Symbols
// Les caches stockent des versions séparées pour différentes valeurs

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

  1. Requête Initiale — Le client demande des données, le serveur répond avec un ETag
  2. Stockage en Cache — Le client met en cache la réponse avec l'ETag
  3. Requête Subséquente — Le client envoie l'en-tête If-None-Match avec l'ETag en cache
  4. Validation — Si les données n'ont pas changé, le serveur renvoie 304 Non modifié
  5. Bande passante économisée — Aucun corps de réponse envoyé, économie importante de bande passante

Implémentation ETag

Requête et réponse initiales
// 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...}
Revalidation conditionnelle
// 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èles courants
// 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

  1. Requête utilisateur — La requête atteint l'emplacement edge Cloudflare le plus proche
  2. Vérification du cache — L'edge vérifie si la réponse est en cache et fraîche
  3. Cache hit — Si en cache, servi immédiatement avec une latence <10ms
  4. Cache miss — Si non en cache, récupéré depuis le serveur d'origine
  5. 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 :

Purging manuel du cache
// 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 :

En-têtes de réponse
// 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

Mise en cache JavaScript
// 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 :

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

URLs Versionnées
// 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 :

Forcer des 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

Script d'Analyse 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.

Ressources Associées

Commencez gratuitement — 200 appels/jour, sans carte

Obtenez des données en direct sur les flux de baleines, le financement, l'intérêt ouvert et les données on-chain sur 3 échanges depuis une seule API. Niveau gratuit, sans carte de crédit, mise à niveau à tout moment.

Commencez gratuitement →
Essayez la console API en direct → (aucun compte nécessaire)