Documentación de la API
Guía de Integración de Caché de Respuestas y CDN
Optimiza el rendimiento de Smart Money API con estrategias de caché inteligentes. Aprende sobre encabezados HTTP de caché, validación ETag, integración con CDN y patrones de caché en el cliente para reducir la latencia y los costos de ancho de banda.
Publicado el 21 de marzo de 2026
•
16 min de lectura
•
Rendimiento
Resumen de Caché
Los endpoints de Smart Money API proporcionan datos del mercado de criptomonedas que cambian con diferentes frecuencias. Algunos datos (direcciones de ballenas, tasas de financiación) se actualizan cada pocos segundos, mientras que otros (análisis histórico, contenido educativo) permanecen estáticos durante horas. El caché inteligente mejora drásticamente el rendimiento y reduce los costos.
Smart Money API implementa una estrategia de caché de tres niveles:
- Caché en el Edge de la CDN — Distribución global de contenido con invalidación automática de caché
- Caché HTTP del Navegador — Caché en el cliente usando encabezados HTTP estándar
- Caché de Aplicación — Caché en memoria para conjuntos de datos accedidos frecuentemente
Perspectiva de Rendimiento: Las respuestas en caché se sirven 50-100 veces más rápido que las solicitudes nuevas a la API y ahorran ancho de banda significativamente. Una integración con caché adecuada puede reducir la transferencia de datos en un 70-85%.
Cada respuesta de Smart Money API incluye directivas de caché que indican a los clientes y CDNs cuánto tiempo los datos permanecen válidos. Entender estas directivas e implementarlas correctamente es crucial para un rendimiento óptimo.
Fundamentos de Caché
El caché HTTP opera basado en encabezados de respuesta que indican si el contenido puede ser almacenado en caché y por cuánto tiempo.
Encabezado Cache-Control
El mecanismo principal para controlar el comportamiento del caché. Cada respuesta de Smart Money API incluye un encabezado Cache-Control que especifica:
- max-age — Duración en segundos que la respuesta permanece válida
- public/private — Si las cachés intermedias pueden almacenarla
- must-revalidate — Si se debe verificar la frescura antes de servir
- no-store — No almacenar en caché datos sensibles
Ejemplos de Encabezados de Caché
Diferentes endpoints tienen diferentes requisitos de caché:
// Datos de direcciones de ballenas (se actualiza cada 5 minutos)
Cache-Control: public, max-age=300
ETag: "abc123def456"
// Tasas de financiación en tiempo real (se actualiza cada segundo)
Cache-Control: public, max-age=1
ETag: "xyz789abc123"
// Datos históricos (no cambian)
Cache-Control: public, max-age=86400, immutable
ETag: "static-content-v1"
Duración de Caché por Tipo de Endpoint
| Tipo de Dato |
Duración de Caché |
Caso de Uso |
| Financiación en Tiempo Real |
1-5 segundos |
Operaciones en vivo, tamaño de posición |
| Movimientos de ballenas |
5 minutos |
Confirmación de señales, alertas |
| OHLCV diario |
1 hora |
Análisis técnico, gráficos |
| Análisis histórico |
24 horas |
Backtesting, investigación |
| Contenido estático |
7 días |
Documentación de API, guías, configuración |
Obtén tu clave API en 30 segundos
¿Listo para construir? Obtén una clave API gratuita (200 llamadas/día, sin tarjeta) y comienza a obtener datos en vivo de ballenas, financiamiento y cadena.
Obtén tu clave API →
ETag y solicitudes condicionales
Las ETags (Etiquetas de Entidad) proporcionan una forma eficiente de validar contenido en caché sin descargar el cuerpo completo de la respuesta.
Cómo funcionan las ETags
- Solicitud inicial — El cliente solicita datos, el servidor responde con ETag
- Almacenamiento en caché — El cliente almacena la respuesta con ETag
- Solicitud posterior — El cliente envía el encabezado If-None-Match con el ETag en caché
- Validación — Si los datos no han cambiado, el servidor devuelve 304 No Modificado
- Ancho de Banda Ahorrado — No se envía cuerpo de respuesta, gran ahorro de ancho de banda
Implementación de ETag
// Primera solicitud
GET /v1/whales/btc HTTP/1.1
// La respuesta incluye ETag
HTTP/1.1 200 OK
ETag: "8a3b9c2d"
Cache-Control: public, max-age=300
Content-Type: application/json
{...response body...}
// Después de que la caché expire, envía If-None-Match
GET /v1/whales/btc HTTP/1.1
If-None-Match: "8a3b9c2d"
// Si no ha cambiado, el servidor responde 304
HTTP/1.1 304 Not Modified
ETag: "8a3b9c2d"
Cache-Control: public, max-age=300
// ¡No se envía cuerpo! Ancho de banda ahorrado
Fuerza del ETag
Los ETags pueden ser fuertes o débiles:
| Tipo |
Formato |
Caso de Uso |
| ETag Fuerte |
"8a3b9c2d" |
Idéntico byte por byte, útil para validación |
| ETag Débil |
W/"8a3b9c2d" |
Equivalentes semánticamente, para cambios visuales |
Directivas de Control de Caché
Comprender las directivas Cache-Control permite construir estrategias de caché óptimas para tu aplicación.
Referencia de Directivas
| Directiva |
Significado |
Ejemplo |
| max-age |
Segundos que la respuesta permanece fresca |
max-age=300 |
| public |
La caché puede almacenar y compartir |
public |
| private |
Caché solo para el destinatario |
private |
| must-revalidate |
Revalidar cuando esté obsoleto |
must-revalidate |
| no-cache |
Debe revalidarse antes de usar |
no-cache |
| no-store |
No almacenar en caché |
no-store |
| immutable |
Nunca cambia, almacenar en caché para siempre |
immutable |
| s-maxage |
Duración de la caché en CDN |
s-maxage=3600 |
Patrones Prácticos de Cache-Control
// Patrón 1: Caché del navegador, CDN por 1 hora
Cache-Control: public, max-age=300, s-maxage=3600
// Patrón 2: Datos por usuario, sin caché de proxy
Cache-Control: private, max-age=1800
// Patrón 3: Siempre fresco, siempre verificar
Cache-Control: public, no-cache, must-revalidate
// Patrón 4: Recurso versionado inmutable
Cache-Control: public, max-age=31536000, immutable
Integración con CDN
Smart Money API entrega respuestas a través de la red global CDN de Cloudflare, almacenando automáticamente respuestas en ubicaciones de borde en todo el mundo para una latencia mínima.
Cómo Funciona Smart Money CDN
- Solicitud del Usuario — La solicitud llega a la ubicación de borde más cercana de Cloudflare
- Verificación de Caché — El borde verifica si la respuesta está en caché y es fresca
- Acierto de Caché — Si está en caché, se sirve inmediatamente con <10ms de latencia
- Fallo de Caché — Si no está en caché, se obtiene del servidor de origen
- Almacenar y Servir — Almacenar la respuesta en caché y entregarla al usuario
Configuración de Clave de Caché
Cloudflare utiliza claves de caché para identificar respuestas almacenadas. Por defecto:
- La ruta de solicitud y los parámetros de consulta están incluidos
- La mayoría de los encabezados se ignoran (para maximizar aciertos de caché)
- Los encabezados de autorización NO están incluidos (sin fugas de cuenta)
- Los encabezados personalizados se pueden incluir mediante el encabezado Vary
Purgado de CDN
Smart Money purga automáticamente la caché CDN cuando se actualizan los datos:
// Purga una URL específica de la CDN
curl -X POST "https://api.smartmoneyapi.com/v1/cache/purge" \
-H "Authorization: Bearer token" \
-d '{
"urls": [
"https://api.smartmoneyapi.com/v1/whales/btc"
]
}'
Medición del Rendimiento de la CDN
Verifica los encabezados de respuesta para ver si la solicitud fue servida desde la caché:
// Acierto de caché desde el borde de la CDN
CF-Cache-Status: HIT
CF-RAY: 8a9b7c6d5e4f3g2h
Age: 45 // segundos desde que se almacenó en caché
// Fallo de caché, obtenido del servidor de origen
CF-Cache-Status: MISS
Age: 0
Caché del Lado del Cliente
Implementa caché en tu aplicación para reducir aún más las llamadas API y mejorar la capacidad de respuesta.
Implementación de Caché en el Navegador
// Crear almacenamiento en caché
const cache = new Map();
async function fetchWithCache(url) {
// Consultar caché primero
const cached = cache.get(url);
if (cached && !isCacheExpired(cached)) {
return cached.data;
}
// Obtener desde la API
const response = await fetch(url);
const data = await response.json();
// Analizar duración de caché desde los encabezados
const cacheControl = response.headers
.get('cache-control');
const maxAge = parseMaxAge(cacheControl);
// Almacenar en caché
cache.set(url, {
data,
expiry: Date.now() + (maxAge * 1000)
});
return data;
}
Caché con Service Worker
Para soporte offline y estrategias avanzadas de caché, utiliza Service Workers:
// Almacenar respuestas de la API con Service Worker
self.addEventListener('fetch', (event) => {
if (event.request.url.includes('api.smartmoneyapi.com')) {
// Primero red, luego caché como respaldo
event.respondWith(
fetch(event.request)
.then(response => {
// Actualizar caché con respuesta reciente
caches.open('api-cache')
.then(cache => cache.put(
event.request, response.clone()));
return response;
})
.catch(() =>
caches.match(event.request))
);
}
});
Estrategias de Cache Busting
A veces necesitas forzar a los clientes a obtener datos frescos. Utiliza estas técnicas:
Parámetro de Versión
Añade un parámetro de versión para invalidar cachés cuando los datos cambien:
// Incluir versión de datos o timestamp
https://api.smartmoneyapi.com/v1/whales/btc?v=1709980800
// Cuando los datos se actualizan, incrementa la versión
https://api.smartmoneyapi.com/v1/whales/btc?v=1709981000
// Nueva URL = nueva entrada en caché
Forzar Revalidación
Anula la caché con Cache-Control: no-cache cuando necesites datos frescos:
// JavaScript: Forzar solicitud fresca
fetch(url, {
cache: 'no-cache', // Revalidar siempre
headers: {
'Cache-Control': 'max-age=0'
}
});
Monitoreo del Rendimiento de la Caché
Controla las tasas de acierto y mejoras de rendimiento para validar tu estrategia de caché.
Métricas de Caché a Monitorear
- Tasa de Acierto — Porcentaje de solicitudes servidas desde caché (objetivo: >70%)
- Tiempo de Respuesta — Latencia promedio (en caché: <50ms, sin caché: 100-300ms)
- Ancho de Banda Ahorrado — Reducción en transferencia de datos
- Carga del Origen — Reducción de solicitudes en el servidor de origen
Análisis de Encabezados de Caché
// Analizar encabezados de caché de respuesta
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')
};
}
Mejores Prácticas de Caché
1. Respetar Encabezados de Respuesta
Respeta siempre los encabezados Cache-Control de Smart Money API. No almacenes en caché contenido marcado como no-store o no-cache.
2. Implementar Solicitudes Condicionales
Envía encabezados If-None-Match (ETag) e If-Modified-Since al revalidar contenido en caché. Ahorra ancho de banda con respuestas 304.
3. Almacenar en Caché Según el Tipo de Datos
- Datos en tiempo real (tasas de financiamiento): caché máximo de 1-5 segundos
- Señales en vivo (movimiento de ballenas): caché de 5-30 segundos
- Datos por hora (OHLCV): caché de 1 hora
- Datos históricos: caché de 24 horas
- Contenido estático: caché de 7 días
4. Monitorear la Efectividad de la Caché
Controla tasas de acierto y mejoras en latencia. Ajusta TTLs según requisitos de frescura de datos y rendimiento de caché.
5. Usar Encabezados Vary con Cuidado
Los encabezados Vary reducen aciertos de caché al crear entradas separadas. Úsalos solo cuando sea necesario para diferentes niveles de autenticación o parámetros.
6. Almacenar en Caché en Múltiples Niveles
Implementa caché en CDN, navegador y niveles de aplicación. Cada capa intercepta solicitudes antes de llegar al origen.
Optimiza el Rendimiento de tu API
La infraestructura de caché de Smart Money API garantiza respuestas en menos de 100ms a escala global. Implementa estrategias inteligentes para maximizar rendimiento y minimizar costos.
Comparar Planes
Todos los planes incluyen caché completa en CDN. Los niveles superiores ofrecen control de caché y APIs de purga.