Documentação da API
Guia de Cache de Resposta e Integração com CDN
Otimize o desempenho da Smart Money API com estratégias inteligentes de cache. Aprenda sobre cabeçalhos de cache HTTP, validação ETag, integração com CDN e padrões de cache no lado do cliente para reduzir latência e custos de banda.
Publicado em 21 de março de 2026
•
16 min de leitura
•
Desempenho
Visão Geral do Cache
Os endpoints da Smart Money API fornecem dados de mercado de criptomoedas que mudam em diferentes frequências. Alguns dados (endereços de baleias, taxas de funding) atualizam a cada poucos segundos, enquanto outros dados (análise histórica, conteúdo educacional) permanecem estáticos por horas. O cache inteligente melhora drasticamente o desempenho e reduz custos.
A Smart Money API implementa uma estratégia de cache de três camadas:
- Cache de Borda CDN — Entrega global de conteúdo com invalidação automática de cache
- Cache HTTP do Navegador — Cache no lado do cliente usando cabeçalhos HTTP padrão
- Cache da Aplicação — Cache em memória para conjuntos de dados acessados frequentemente
Insight de Desempenho: Respostas em cache são servidas 50-100x mais rápido do que solicitações de API novas e economizam largura de banda significativamente. Uma integração corretamente armazenada em cache pode reduzir a transferência de dados em 70-85%.
Cada resposta da Smart Money API inclui diretivas de cache que informam aos clientes e CDNs por quanto tempo os dados permanecem válidos. Entender essas diretivas e implementá-las corretamente é crucial para um desempenho ideal.
Fundamentos de Cache
O cache HTTP opera com base em cabeçalhos de resposta que indicam se o conteúdo pode ser armazenado em cache e por quanto tempo.
Cabeçalho Cache-Control
O mecanismo principal para controlar o comportamento do cache. Cada resposta da Smart Money API inclui um cabeçalho Cache-Control especificando:
- max-age — Duração em segundos que a resposta permanece válida
- public/private — Se caches intermediários podem armazená-la
- must-revalidate — Se deve verificar a atualização antes de servir
- no-store — Não armazenar dados sensíveis em cache
Exemplo de Cabeçalhos de Cache
Diferentes endpoints têm requisitos de cache diferentes:
// Dados de endereços de baleias (atualiza a cada 5 minutos)
Cache-Control: public, max-age=300
ETag: "abc123def456"
// Taxas de funding em tempo real (atualiza a cada segundo)
Cache-Control: public, max-age=1
ETag: "xyz789abc123"
// Dados históricos (não mudam)
Cache-Control: public, max-age=86400, immutable
ETag: "static-content-v1"
Duração do Cache por Tipo de Endpoint
| Tipo de Dado |
Duração do Cache |
Caso de Uso |
| Funding em Tempo Real |
1-5 segundos |
Negociação ao vivo, dimensionamento de posição |
| Movimentações de Baleias |
5 minutos |
Confirmação de sinal, alertas |
| OHLCV Diário |
1 hora |
Análise técnica, gráficos |
| Análise Histórica |
24 horas |
Backtesting, pesquisa |
| Conteúdo Estático |
7 dias |
Documentação da API, guias, configuração |
Obtenha sua chave de API em 30 segundos
Pronto para construir? Obtenha uma chave de API gratuita (200 chamadas/dia, sem cartão) e comece a extrair dados ao vivo de baleias, funding e on-chain.
Obtenha sua chave de API →
ETag e Solicitações Condicionais
ETags (Entity Tags) fornecem uma maneira eficiente de validar conteúdo em cache sem baixar o corpo completo da resposta.
Como as ETags Funcionam
- Solicitação Inicial — O cliente solicita dados, o servidor responde com ETag
- Armazenamento em Cache — O cliente armazena a resposta com ETag
- Solicitação Subsequente — O cliente envia o cabeçalho If-None-Match com o ETag em cache
- Validação — Se os dados não foram alterados, o servidor retorna 304 Not Modified
- Largura de Banda Economizada — Nenhum corpo de resposta enviado, grande economia de largura de banda
Implementação de ETag
// Primeira requisição
GET /v1/whales/btc HTTP/1.1
// A resposta inclui ETag
HTTP/1.1 200 OK
ETag: "8a3b9c2d"
Cache-Control: public, max-age=300
Content-Type: application/json
{...corpo da resposta...}
// Após o cache expirar, envie If-None-Match
GET /v1/whales/btc HTTP/1.1
If-None-Match: "8a3b9c2d"
// Se não houver alterações, o servidor responde com 304
HTTP/1.1 304 Not Modified
ETag: "8a3b9c2d"
Cache-Control: public, max-age=300
// Nenhum corpo enviado! Largura de banda economizada
Força do ETag
ETags podem ser fortes ou fracos:
| Tipo |
Formato |
Caso de Uso |
| ETag Forte |
"8a3b9c2d" |
Idêntico byte por byte, usado para validação |
| ETag Fraco |
W/"8a3b9c2d" |
Equivalentes semanticamente, para mudanças de exibição |
Diretivas de Controle de Cache
Entender as diretivas Cache-Control permite construir estratégias de cache ideais para sua aplicação.
Referência de Diretivas
| Diretiva |
Significado |
Exemplo |
| max-age |
Segundos que a resposta permanece fresca |
max-age=300 |
| public |
Cache pode armazenar e compartilhar |
public |
| private |
Cache apenas para o destinatário |
private |
| must-revalidate |
Revalidar quando obsoleto |
must-revalidate |
| no-cache |
Deve revalidar antes de usar |
no-cache |
| no-store |
Não armazenar em cache |
no-store |
| immutable |
Nunca muda, cache para sempre |
immutable |
| s-maxage |
Duração do cache na CDN |
s-maxage=3600 |
Padrões Práticos de Cache-Control
// Padrão 1: Cache do navegador, CDN por 1 hora
Cache-Control: public, max-age=300, s-maxage=3600
// Padrão 2: Dados por usuário, sem cache de proxy
Cache-Control: private, max-age=1800
// Padrão 3: Sempre fresco, sempre verificar
Cache-Control: public, no-cache, must-revalidate
// Padrão 4: Ativo versionado imutável
Cache-Control: public, max-age=31536000, immutable
Integração com CDN
A Smart Money API entrega respostas através da rede global de CDN da Cloudflare, armazenando automaticamente respostas em locais de borda em todo o mundo para latência mínima.
Como Funciona a CDN da Smart Money
- Requisição do Usuário — A requisição chega ao local de borda mais próximo da Cloudflare
- Verificação de Cache — A borda verifica se a resposta está em cache e está fresca
- Acerto de Cache — Se estiver em cache, serve imediatamente com latência <10ms
- Erro de Cache — Se não estiver em cache, busca no servidor de origem
- Armazenar e Servir — Armazena a resposta em cache e entrega ao usuário
Configuração de Chave de Cache
A Cloudflare usa chaves de cache para identificar exclusivamente respostas em cache. Por padrão:
- O caminho da requisição e os parâmetros de consulta são incluídos
- A maioria dos cabeçalhos é ignorada (para maximizar acertos de cache)
- Cabeçalhos de autorização NÃO são incluídos (sem vazamento de conta)
- Cabeçalhos personalizados podem ser incluídos via cabeçalho Vary
Limpeza de CDN
A Smart Money limpa automaticamente o cache da CDN quando os dados são atualizados:
// Limpa URL específica da CDN
curl -X POST "https://api.smartmoneyapi.com/v1/cache/purge" \
-H "Authorization: Bearer token" \
-d '{
"urls": [
"https://api.smartmoneyapi.com/v1/whales/btc"
]
}'
Medindo o Desempenho da CDN
Verifique os cabeçalhos de resposta para ver se a requisição foi servida do cache:
// Acerto de cache da borda da CDN
CF-Cache-Status: HIT
CF-RAY: 8a9b7c6d5e4f3g2h
Age: 45 // segundos desde o cache
// Erro de cache, buscado do servidor de origem
CF-Cache-Status: MISS
Age: 0
Cache do Lado do Cliente
Implemente cache em sua aplicação para reduzir ainda mais as chamadas à API e melhorar a responsividade.
Implementação de Cache no Navegador
// Criar armazenamento de cache
const cache = new Map();
async function fetchWithCache(url) {
// Verificar cache primeiro
const cached = cache.get(url);
if (cached && !isCacheExpired(cached)) {
return cached.data;
}
// Buscar da API
const response = await fetch(url);
const data = await response.json();
// Analisar duração do cache dos cabeçalhos
const cacheControl = response.headers
.get('cache-control');
const maxAge = parseMaxAge(cacheControl);
// Armazenar em cache
cache.set(url, {
data,
expiry: Date.now() + (maxAge * 1000)
});
return data;
}
Cache de Service Worker
Para suporte offline e estratégias avançadas de cache, use Service Workers:
// Cache de respostas da API com Service Worker
self.addEventListener('fetch', (event) => {
if (event.request.url.includes('api.smartmoneyapi.com')) {
Rede primeiro, depois cache
event.respondWith(
fetch(event.request)
.then(response => {
// Atualizar cache com resposta recente
caches.open('api-cache')
.then(cache => cache.put(
event.request, response.clone()));
return response;
})
.catch(() =>
caches.match(event.request))
);
}
});
Estratégias de Cache Busting
Às vezes, é necessário forçar os clientes a obter dados atualizados. Use estas técnicas:
Parâmetro de Versão
Adicione um parâmetro de versão para invalidar caches quando os dados mudarem:
// Inclua versão dos dados ou timestamp
https://api.smartmoneyapi.com/v1/whales/btc?v=1709980800
// Quando os dados atualizarem, incremente a versão
https://api.smartmoneyapi.com/v1/whales/btc?v=1709981000
// Nova URL = nova entrada no cache
Forçar Revalidação
Substitua o cache com Cache-Control: no-cache quando precisar de dados atualizados:
// JavaScript: Forçar requisição atualizada
fetch(url, {
cache: 'no-cache', // Sempre revalidar
headers: {
'Cache-Control': 'max-age=0'
}
});
Monitoramento de Desempenho do Cache
Acompanhe taxas de acerto e melhorias de desempenho para validar sua estratégia de cache.
Métricas de Cache para Monitorar
- Taxa de Acerto — Porcentagem de requisições atendidas pelo cache (objetivo: >70%)
- Tempo de Resposta — Latência média (cache: <50ms, sem cache: 100-300ms)
- Largura de Banda Economizada — Redução na transferência de dados
- Carga na Origem — Redução de requisições no servidor de origem
Análise de Cabeçalhos de Cache
// Analisar cabeçalhos de cache da resposta
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')
};
}
Melhores Práticas de Cache
1. Respeitar Cabeçalhos de Resposta
Sempre respeite os cabeçalhos Cache-Control da Smart Money API. Não armazene em cache conteúdo marcado como no-store ou no-cache.
2. Implementar Requisições Condicionais
Envie cabeçalhos If-None-Match (ETag) e If-Modified-Since ao revalidar conteúdo em cache. Economize largura de banda com respostas 304.
3. Armazenar em Cache de Acordo com o Tipo de Dado
- Dados em tempo real (taxas de funding): cache máximo de 1-5 segundos
- Sinais ao vivo (movimento de baleias): cache de 5-30 segundos
- Dados horários (OHLCV): cache de 1 hora
- Dados históricos: cache de 24 horas
- Conteúdo estático: cache de 7 dias
4. Monitorar Eficácia do Cache
Acompanhe taxas de acerto e melhorias de latência. Ajuste TTLs com base nos requisitos de atualização de dados e desempenho do cache.
5. Usar Cabeçalhos Vary com Cuidado
Cabeçalhos Vary reduzem acertos de cache ao criar entradas separadas. Use apenas quando necessário para diferentes níveis de autenticação ou parâmetros.
6. Armazenar em Cache em Múltiplas Camadas
Implemente cache em CDN, navegador e níveis de aplicação. Cada camada intercepta requisições antes de chegar à origem.
Otimize o Desempenho da Sua API
A infraestrutura de cache da Smart Money API garante respostas abaixo de 100ms em escala global. Implemente estratégias inteligentes de cache para maximizar desempenho e minimizar custos.
Comparar Planos
Todos os planos incluem cache completo em CDN. Planos superiores oferecem controle de cache e APIs de purga.