回應快取與 CDN 整合指南

透過智慧快取策略優化 Smart Money API 效能。學習 HTTP 快取標頭、ETag 驗證、CDN 整合與客戶端快取模式,以減少延遲與頻寬成本。

發布於 2026 年 3 月 21 日 16 分鐘閱讀 效能

快取概覽

Smart Money API 端點提供不同頻率變化的加密貨幣市場數據。某些數據(鯨魚地址、資金費率)每幾秒更新一次,而其他數據(歷史分析、教育內容)則保持靜態數小時。智慧快取顯著提升效能並降低成本。

Smart Money API 實施了三層快取策略:

  • CDN 邊緣快取 — 全球內容交付,自動快取失效
  • HTTP 瀏覽器快取 — 使用標準 HTTP 標頭的客戶端快取
  • 應用程式快取 — 針對常用數據集的記憶體快取

效能洞察: 快取回應比新鮮的 API 請求快 50-100 倍,並顯著節省頻寬。適當的快取整合可減少 70-85% 的數據傳輸。

每個 Smart Money API 回應都包含快取指令,告訴客戶端與 CDN 數據的有效期。理解這些指令並正確實施對於最佳效能至關重要。

快取基礎

HTTP 快取基於回應標頭運作,這些標頭指示內容是否可以快取以及快取多久。

Cache-Control 標頭

控制快取行為的主要機制。每個 Smart Money API 回應都包含一個 Cache-Control 標頭,指定:

  • max-age — 回應有效的秒數
  • public/private — 中間快取是否可以儲存它
  • must-revalidate — 在提供前是否檢查新鮮度
  • no-store — 不要快取敏感數據

範例快取標頭

不同端點有不同的快取需求:

回應標頭
// 鯨魚地址數據(每 5 分鐘更新)
Cache-Control: public, max-age=300
ETag: "abc123def456"
// 即時資金費率(每秒更新)
Cache-Control: public, max-age=1
ETag: "xyz789abc123"
// 歷史數據(不變)
Cache-Control: public, max-age=86400, immutable
ETag: "static-content-v1"

按端點類型的快取持續時間

數據類型 快取持續時間 使用案例
即時資金 1-5 秒 即時交易,倉位大小
鯨魚動向 5 分鐘 信號確認,警報
每日 OHLCV 1 小時 技術分析,圖表
歷史分析 24 小時 回測,研究
靜態內容 7 天 API 文件,指南,配置
30 秒內獲取您的 API 密鑰

準備好構建了嗎?獲取免費 API 密鑰(每天 100 次呼叫,無需信用卡)並開始提取即時的鯨魚、資金與鏈上數據。

獲取您的 API 密鑰 →

HTTP 快取標頭

Smart Money API 回應包含多個快取相關標頭,協同工作以最大化效能同時保持數據新鮮度。

Cache-Control:主要標頭

控制瀏覽器與中間快取的行為:

Cache-Control 指令
// 公開數據,快取 5 分鐘
Cache-Control: public, max-age=300
// 私有數據,僅在瀏覽器中快取
Cache-Control: private, max-age=3600
// 不可變內容,永久快取
Cache-Control: public, max-age=31536000, immutable
// 在提供前始終重新驗證
Cache-Control: public, max-age=0, must-revalidate
// 不要快取敏感數據
Cache-Control: private, no-store, no-cache

Expires 標頭(舊版)

對於舊版客戶端,Smart Money 也提供 Expires 標頭(HTTP/1.0):

Expires 標頭
// 絕對過期時間
Expires: Wed, 22 Mar 2026 14:30:00 GMT
// Cache-Control max-age 在 HTTP/1.1 中優先

Last-Modified 標頭

指示內容最後更新的時間,啟用條件請求:

Last-Modified 使用
// 回應包含 Last-Modified
Last-Modified: Wed, 21 Mar 2026 10:15:30 GMT
// 客戶端使用 If-Modified-Since 重新驗證
If-Modified-Since: Wed, 21 Mar 2026 10:15:30 GMT
// 如果未變更,伺服器回應 304 Not Modified
HTTP/1.1 304 Not Modified

Vary 標頭

告訴快取哪些請求標頭影響回應(身份驗證,參數):

Vary 標頭
// 回應因身份驗證與符號而異
Vary: Authorization, X-Symbols
// 快取為不同值儲存不同版本

ETag 與條件請求

ETags(實體標籤)提供了一種高效的方式來驗證快取內容,而無需下載完整的回應主體。

ETag 如何運作

  1. 初始請求 — 客戶端請求數據,伺服器回應 ETag
  2. 快取儲存 — 客戶端快取回應與 ETag
  3. 後續請求 — 客戶端發送帶有緩存ETag的If-None-Match標頭
  4. 驗證 — 如果數據未變更,伺服器返回304 Not Modified
  5. 節省頻寬 — 不發送響應主體,大幅節省頻寬

ETag實現

初始請求與響應
// 首次請求
GET /v1/whales/btc HTTP/1.1
// 響應包含ETag
HTTP/1.1 200 OK
ETag: "8a3b9c2d"
Cache-Control: public, max-age=300
Content-Type: application/json
{...響應主體...}
條件重新驗證
// 緩存過期後,發送If-None-Match
GET /v1/whales/btc HTTP/1.1
If-None-Match: "8a3b9c2d"
// 如果未變更,伺服器響應304
HTTP/1.1 304 Not Modified
ETag: "8a3b9c2d"
Cache-Control: public, max-age=300
// 不發送主體!節省頻寬

ETag強度

ETag可分為強驗證與弱驗證:

類型 格式 使用場景
強ETag "8a3b9c2d" 字節完全一致,用於驗證
弱ETag W/"8a3b9c2d" 語意等效,適用於顯示變更

緩存控制指令

理解Cache-Control指令可為應用構建最佳緩存策略。

指令參考

指令 含義 範例
max-age 響應保持新鮮的秒數 max-age=300
public 可被緩存並共享 public
private 僅限接收者緩存 private
must-revalidate 過期時需重新驗證 must-revalidate
no-cache 使用前必須重新驗證 no-cache
no-store 完全不緩存 no-store
immutable 永不變更,永久緩存 immutable
s-maxage CDN緩存時長 s-maxage=3600

實用緩存控制模式

常見模式
// 模式1:瀏覽器緩存,CDN緩存1小時
Cache-Control: public, max-age=300, s-maxage=3600
// 模式2:用戶專屬數據,不緩存在代理
Cache-Control: private, max-age=1800
// 模式3:始終最新,始終檢查
Cache-Control: public, no-cache, must-revalidate
// 模式4:不可變的版本化資源
Cache-Control: public, max-age=31536000, immutable

CDN整合

Smart Money API通過Cloudflare全球CDN網絡交付響應,自動在全球邊緣節點緩存以實現最低延遲。

Smart Money CDN運作原理

  1. 用戶請求 — 請求到達最近的Cloudflare邊緣節點
  2. 緩存檢查 — 邊緣節點檢查響應是否已緩存且新鮮
  3. 緩存命中 — 若已緩存,立即響應(延遲<10ms)
  4. 緩存未命中 — 若未緩存,從源伺服器獲取
  5. 存儲並交付 — 緩存響應並傳遞給用戶

緩存鍵配置

Cloudflare使用緩存鍵唯一標識緩存響應。默認情況下:

  • 請求路徑和查詢參數被包含
  • 大多數標頭被忽略(以最大化緩存命中率)
  • 不包含Authorization標頭(防止帳戶信息洩露)
  • 可通過Vary標頭包含自定義標頭

CDN清除

Smart Money在數據更新時自動清除CDN緩存:

手動清除緩存
// 從CDN清除特定URL
curl -X POST "https://api.smartmoneyapi.com/v1/cache/purge" \
-H "Authorization: Bearer token" \
-d '{
"urls": [
"https://api.smartmoneyapi.com/v1/whales/btc"
]
}'

測量CDN性能

檢查響應標頭以確認請求是否由緩存提供:

響應標頭
// CDN邊緣節點緩存命中
CF-Cache-Status: HIT
CF-RAY: 8a9b7c6d5e4f3g2h
Age: 45 // 自緩存以來的秒數
// 緩存未命中,從源伺服器獲取
CF-Cache-Status: MISS
Age: 0

客戶端緩存

在應用中實現緩存以進一步減少API調用並提升響應速度。

瀏覽器緩存實現

JavaScript緩存
// 創建緩存存儲
const cache = new Map();
async function fetchWithCache(url) {
// 先檢查快取
const cached = cache.get(url);
if (cached && !isCacheExpired(cached)) {
return cached.data;
}
// 從API獲取數據
const response = await fetch(url);
const data = await response.json();
// 從標頭解析快取時長
const cacheControl = response.headers
.get('cache-control');
const maxAge = parseMaxAge(cacheControl);
// 存入快取
cache.set(url, {
data,
expiry: Date.now() + (maxAge * 1000)
});
return data;
}

Service Worker快取

為實現離線支援與進階快取策略,請使用Service Workers:

Service Worker
// 使用Service Worker快取API回應
self.addEventListener('fetch', (event) => {
if (event.request.url.includes('api.smartmoneyapi.com')) {
// 網路優先,快取回退
event.respondWith(
fetch(event.request)
.then(response => {
// 用最新回應更新快取
caches.open('api-cache')
.then(cache => cache.put(
event.request, response.clone()));
return response;
})
.catch(() =>
caches.match(event.request))
);
}
});

快取失效策略

有時需強制客戶端獲取新數據。請使用以下技巧:

版本參數

添加版本參數以在數據變更時使快取失效:

版本化URL
// 包含數據版本或時間戳
https://api.smartmoneyapi.com/v1/whales/btc?v=1709980800
// 數據更新時遞增版本
https://api.smartmoneyapi.com/v1/whales/btc?v=1709981000
// 新URL = 新快取條目

強制重新驗證

當需要新數據時,用Cache-Control: no-cache覆寫快取:

強制獲取新數據
// JavaScript: 強制新請求
fetch(url, {
cache: 'no-cache', // 始終重新驗證
headers: {
'Cache-Control': 'max-age=0'
}
});

監控快取效能

追蹤快取命中率與效能改進以驗證快取策略。

需監控的快取指標

  • 命中率 — 從快取服務的請求百分比(目標:>70%)
  • 回應時間 — 平均延遲(快取:<50ms,未快取:100-300ms)
  • 節省頻寬 — 數據傳輸量的減少
  • 原始伺服器負載 — 原始伺服器請求的減少

分析快取標頭

快取分析腳本
// 分析回應快取標頭
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')
};
}

快取最佳實踐

1. 遵守回應標頭

始終遵守Smart Money API的Cache-Control標頭。勿快取標記為no-store或no-cache的內容。

2. 實現條件請求

重新驗證快取內容時發送If-None-Match (ETag)和If-Modified-Since標頭。透過304回應節省頻寬。

3. 按數據類型適當快取

  • 即時數據(資金費率):最多快取1-5秒
  • 即時信號(巨鯨動向):快取5-30秒
  • 每小時數據(OHLCV):快取1小時
  • 歷史數據:快取24小時
  • 靜態內容:快取7天

4. 監控快取效果

追蹤命中率與延遲改進。根據數據新鮮度需求與快取效能調整TTL。

5. 謹慎使用Vary標頭

Vary標頭會因建立獨立快取條目而降低命中率。僅在不同認證等級或參數時必要使用。

6. 多層快取

在CDN、瀏覽器和應用層級實現快取。每層皆能在請求到達原始伺服器前攔截。

優化您的API效能

Smart Money API的快取基礎架構確保全球範圍內次100毫秒的回應。實施智能快取策略以最大化效能並最小化成本。

比較方案
所有方案均包含完整CDN快取。更高階方案提供快取控制與清除API。

相關資源

免費開始 — 每日100次呼叫,無需信用卡

透過單一API獲取3家交易所的即時巨鯨資金流、資金費率、未平倉量與鏈上數據。免費方案無需信用卡,隨時升級。

免費開始 →
試用即時API控制台 → (無需帳戶)