คู่มือการแคชการตอบสนองและการรวม 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 →

ส่วนหัวแคช 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. การร้องขอครั้งต่อไป — Client ส่ง header If-None-Match พร้อมกับ ETag ที่แคชไว้
  4. การตรวจสอบ — หากข้อมูลไม่เปลี่ยนแปลง เซิร์ฟเวอร์จะส่งกลับ 304 Not Modified
  5. ประหยัดแบนด์วิธ — ไม่มีการส่ง 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

  1. คำขอจากผู้ใช้ — คำขอไปยังตำแหน่ง edge ที่ใกล้ที่สุดของ Cloudflare
  2. การตรวจสอบแคช — Edge ตรวจสอบว่าคำตอบถูกแคชและสดใหม่หรือไม่
  3. แคชฮิต — หากถูกแคช ให้บริการทันทีด้วยความล่าช้า <10ms
  4. แคชมิส — หากไม่ถูกแคช ดึงข้อมูลจากเซิร์ฟเวอร์ต้นทาง
  5. เก็บและให้บริการ — แคชคำตอบและส่งให้ผู้ใช้

การตั้งค่าคีย์แคช

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 และเพิ่มความเร็วในการตอบสนอง

การใช้งานแคชเบราว์เซอร์

การแคชด้วย 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
// แคชการตอบสนองจาก 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))
);
}
});

กลยุทธ์การล้างแคช

บางครั้งคุณจำเป็นต้องบังคับให้ไคลเอนต์รับข้อมูลใหม่ ใช้เทคนิคเหล่านี้:

พารามิเตอร์เวอร์ชัน

เพิ่มพารามิเตอร์เวอร์ชันเพื่อยกเลิกแคชเมื่อข้อมูลเปลี่ยนแปลง:

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. เคารพส่วนหัวการตอบสนอง

เคารพส่วนหัว 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 การล้าง

แหล่งข้อมูลที่เกี่ยวข้อง

เริ่มต้นฟรี — 100 ครั้ง/วัน ไม่ต้องใช้บัตร

รับข้อมูลการไหลของวาฬสด, การระดมทุน, open interest และข้อมูล on-chain จาก 3 exchange จาก API เดียว ระดับฟรี ไม่ต้องใช้บัตรเครดิต อัปเกรดได้ทุกเมื่อ

เริ่มต้นฟรี →
ลองใช้คอนโซล API สด → (ไม่จำเป็นต้องมีบัญชี)