เอกสาร API
คู่มือการแคชการตอบสนองและการรวม CDN
เพิ่มประสิทธิภาพ Smart Money API ด้วยกลยุทธ์การแคชอัจฉริยะ เรียนรู้เกี่ยวกับส่วนหัวแคช HTTP การตรวจสอบ ETag การรวม CDN และรูปแบบการแคชฝั่งไคลเอ็นต์เพื่อลดความล่าช้าและค่าใช้จ่ายแบนด์วิธ
เผยแพร่ 21 มีนาคม 2026
•
อ่าน 16 นาที
•
ประสิทธิภาพ
ภาพรวมการแคช
จุดปลายทาง Smart Money API ให้บริการข้อมูลตลาดคริปโตเคอเรนซีที่เปลี่ยนแปลงด้วยความถี่ต่างกัน ข้อมูลบางอย่าง (เช่น ที่อยู่วาฬ อัตราการระดมทุน) อัปเดตทุกไม่กี่วินาที ในขณะที่ข้อมูลอื่นๆ (เช่น การวิเคราะห์ประวัติศาสตร์ เนื้อหาเพื่อการศึกษา) คงที่เป็นเวลาหลายชั่วโมง การแคชอัจฉริยะช่วยเพิ่มประสิทธิภาพและลดค่าใช้จ่ายได้อย่างมาก
Smart Money API ใช้กลยุทธ์การแคชสามระดับ:
- แคชขอบ CDN — การส่งเนื้อหาแบบทั่วโลกด้วยการล้างแคชอัตโนมัติ
- แคชเบราว์เซอร์ HTTP — การแคชฝั่งไคลเอ็นต์โดยใช้ส่วนหัว HTTP มาตรฐาน
- แคชแอปพลิเคชัน — การแคชในหน่วยความจำสำหรับชุดข้อมูลที่เข้าถึงบ่อย
ข้อมูลเชิงลึกด้านประสิทธิภาพ: การตอบสนองที่แคชไว้ทำงานเร็วขึ้น 50-100 เท่าเมื่อเทียบกับการร้องขอ API ใหม่และช่วยลดการใช้แบนด์วิธได้อย่างมาก การรวมระบบที่แคชอย่างเหมาะสมสามารถลดการถ่ายโอนข้อมูลได้ 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 คู่มือ การกำหนดค่า |
รับคีย์ API ของคุณใน 30 วินาที
พร้อมสร้างแล้วหรือยัง? รับคีย์ API ฟรี (100 ครั้ง/วัน ไม่ต้องใช้บัตร) และเริ่มดึงข้อมูลวาฬ การระดมทุน และข้อมูลออนเชนแบบสด
รับคีย์ API →
ETag และการร้องขอแบบมีเงื่อนไข
ETags (แท็กเอนทิตี) ให้วิธีการที่มีประสิทธิภาพในการตรวจสอบความถูกต้องของเนื้อหาที่แคชไว้โดยไม่ต้องดาวน์โหลดเนื้อหาการตอบสนองทั้งหมด
วิธีการทำงานของ ETag
- การร้องขอครั้งแรก — ไคลเอ็นต์ร้องขอข้อมูล เซิร์ฟเวอร์ตอบกลับด้วย ETag
- การเก็บแคช — ไคลเอ็นต์แคชการตอบสนองพร้อม ETag
- การร้องขอครั้งต่อไป — Client ส่ง header If-None-Match พร้อมกับ ETag ที่แคชไว้
- การตรวจสอบ — หากข้อมูลไม่เปลี่ยนแปลง เซิร์ฟเวอร์จะส่งกลับ 304 Not Modified
- ประหยัดแบนด์วิธ — ไม่มีการส่ง response body ประหยัดแบนด์วิธได้มาก
การใช้งาน 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
{...response body...}
// หลังจากแคชหมดอายุ ส่ง 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
// ไม่มีการส่ง body! ประหยัดแบนด์วิธ
ความแข็งแกร่งของ ETag
ETag สามารถเป็นแบบ strong หรือ weak:
| ประเภท |
รูปแบบ |
กรณีการใช้งาน |
| Strong ETag |
"8a3b9c2d" |
เหมือนกันทุกไบต์ ใช้สำหรับการตรวจสอบ |
| Weak ETag |
W/"8a3b9c2d" |
เทียบเท่าเชิงความหมาย สำหรับการเปลี่ยนแปลงการแสดงผล |
คำสั่ง Cache Control
การเข้าใจคำสั่ง 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 |
รูปแบบการใช้งาน Cache-Control ในทางปฏิบัติ
// รูปแบบ 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 ส่งคำตอบผ่านเครือข่าย CDN ทั่วโลกของ Cloudflare โดยแคชคำตอบที่ตำแหน่ง edge ทั่วโลกเพื่อความล่าช้าที่น้อยที่สุด
วิธีการทำงานของ Smart Money CDN
- คำขอจากผู้ใช้ — คำขอไปยังตำแหน่ง edge ที่ใกล้ที่สุดของ Cloudflare
- การตรวจสอบแคช — Edge ตรวจสอบว่าคำตอบถูกแคชและสดใหม่หรือไม่
- แคชฮิต — หากถูกแคช ให้บริการทันทีด้วยความล่าช้า <10ms
- แคชมิส — หากไม่ถูกแคช ดึงข้อมูลจากเซิร์ฟเวอร์ต้นทาง
- เก็บและให้บริการ — แคชคำตอบและส่งให้ผู้ใช้
การตั้งค่าคีย์แคช
Cloudflare ใช้คีย์แคชเพื่อระบุคำตอบที่แคชไว้ โดยค่าเริ่มต้น:
- เส้นทางคำขอและพารามิเตอร์คำขอรวมอยู่ด้วย
- ส่วนใหญ่ของเฮดเดอร์จะถูกละเว้น (เพื่อเพิ่มแคชฮิต)
- เฮดเดอร์ Authorization จะไม่รวมอยู่ (ไม่มีการรั่วไหลของบัญชี)
- เฮดเดอร์ที่กำหนดเองสามารถรวมได้ผ่านเฮดเดอร์ Vary
การลบแคช CDN
Smart Money จะลบแคช CDN โดยอัตโนมัติเมื่อข้อมูลอัปเดต:
// ลบ URL เฉพาะจาก CDN
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 edge
CF-Cache-Status: HIT
CF-RAY: 8a9b7c6d5e4f3g2h
Age: 45 // วินาทีตั้งแต่ถูกแคช
// แคชมิส ดึงข้อมูลจากต้นทาง
CF-Cache-Status: MISS
Age: 0
การแคชฝั่งไคลเอ็นต์
ใช้งานการแคชในแอปพลิเคชันของคุณเพื่อลดการเรียก API และเพิ่มความเร็วในการตอบสนอง
การใช้งานแคชเบราว์เซอร์
// สร้างพื้นที่เก็บแคช
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:
// แคชการตอบสนองจาก API ด้วย Service Worker
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))
);
}
});
กลยุทธ์การล้างแคช
บางครั้งคุณจำเป็นต้องบังคับให้ไคลเอนต์รับข้อมูลใหม่ ใช้เทคนิคเหล่านี้:
พารามิเตอร์เวอร์ชัน
เพิ่มพารามิเตอร์เวอร์ชันเพื่อยกเลิกแคชเมื่อข้อมูลเปลี่ยนแปลง:
// รวมเวอร์ชันข้อมูลหรือประทับเวลา
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. เคารพส่วนหัวการตอบสนอง
เคารพส่วนหัว Cache-Control จาก Smart Money API เสมอ อย่าแคชเนื้อหาที่ระบุว่า 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 รองรับการตอบสนองต่ำกว่า 100ms ในระดับโลก ดำเนินกลยุทธ์การแคชที่ชาญฉลาดเพื่อเพิ่มประสิทธิภาพสูงสุดและลดต้นทุน
เปรียบเทียบแผน
ทุกแผนรวมการแคช CDN แบบเต็ม ระดับสูงกว่ามีการควบคุมแคชและ API การล้าง