دليل التخزين المؤقت للاستجابات وتكامل 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 توجيهات تخزين مؤقت تخبر العملاء وCDNs بمدى صلاحية البيانات. فهم هذه التوجيهات وتنفيذها بشكل صحيح أمر بالغ الأهمية لأداء مثالي.

أساسيات التخزين المؤقت

يعمل تخزين 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 (علامات الكيان) طريقة فعالة للتحقق من صحة المحتوى المخزن مؤقتًا دون تنزيل جسم الاستجابة بالكامل.

كيف تعمل ETags

  1. الطلب الأولي — يطلب العميل البيانات، يرد الخادم بـ ETag
  2. تخزين التخزين المؤقت — يخزن العميل الاستجابة مع ETag
  3. طلب لاحق — العميل يُرسل رأس If-None-Match مع ETag المخزنة مؤقتًا
  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
{...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
// لا يتم إرسال الجسم! تم توفير النطاق الترددي

قوة ETag

يمكن أن تكون ETags قوية أو ضعيفة:

النوع التنسيق حالة الاستخدام
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

أنماط عملية لـ Cache-Control

أنماط شائعة
// النمط 1: تخزين متصفح مؤقت، CDN لمدة ساعة
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، مع تخزين الاستجابات مؤقتًا تلقائيًا في مواقع الحافة حول العالم لأقل زمن انتقال.

كيف يعمل CDN لـ Smart Money

  1. طلب المستخدم — يصل الطلب إلى أقرب موقع حافة لـ Cloudflare
  2. فحص التخزين المؤقت — يتحقق الحافة مما إذا كانت الاستجابة مخزنة مؤقتًا وطازجة
  3. ضربة التخزين المؤقت — إذا كانت مخزنة مؤقتًا، يتم تقديمها فورًا بزمن انتقال أقل من 10 مللي ثانية
  4. فقدان التخزين المؤقت — إذا لم تكن مخزنة مؤقتًا، يتم جلبها من الخادم الأصلي
  5. التخزين والتقديم — تخزين الاستجابة مؤقتًا وتقديمها للمستخدم

تكوين مفتاح التخزين المؤقت

يستخدم Cloudflare مفاتيح التخزين المؤقت لتحديد الاستجابات المخزنة مؤقتًا بشكل فريد. افتراضيًا:

  • يتم تضمين مسار الطلب ومعلمات الاستعلام
  • يتم تجاهل معظم الرؤوس (لزيادة ضربات التخزين المؤقت)
  • لا يتم تضمين رؤوس التفويض (لا يوجد تسريب للحساب)
  • يمكن تضمين رؤوس مخصصة عبر رأس 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
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
// تخزين استجابات 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 عندما تحتاج إلى بيانات جديدة:

Force Fresh Data
// 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): تخزين مؤقت لمدة ساعة
  • البيانات التاريخية: تخزين مؤقت لمدة 24 ساعة
  • المحتوى الثابت: تخزين مؤقت لمدة 7 أيام

4. مراقبة فعالية الذاكرة المؤقتة

تتبع معدلات الضربات وتحسينات زمن الوصول. اضبط TTLs بناءً على متطلبات نضارة البيانات وأداء الذاكرة المؤقتة.

5. استخدام رؤوس Vary بحذر

تقلل رؤوس Vary من ضربات الذاكرة المؤقتة عن طريق إنشاء إدخالات ذاكرة مؤقتة منفصلة. استخدمها فقط عند الضرورة لمستويات المصادقة أو المعلمات المختلفة.

6. التخزين المؤقت على مستويات متعددة

نفذ التخزين المؤقت على مستويات CDN والمتصفح والتطبيق. كل طبقة تلتقط الطلبات قبل الوصول إلى المصدر.

تحسين أداء API الخاص بك

يضمن بنية التخزين المؤقت لـ Smart Money API استجابات أقل من 100 مللي ثانية على نطاق عالمي. نفذ استراتيجيات التخزين المؤقت الذكية لتعظيم الأداء وتقليل التكاليف.

مقارنة الخطط
تشمل جميع الخطط التخزين المؤقت الكامل لـ CDN. توفر المستويات الأعلى تحكمًا في الذاكرة المؤقتة وواجهات برمجة تطبيقات التطهير.

موارد ذات صلة

ابدأ مجانًا — 100 استدعاء/يوم، بدون بطاقة

احصل على تدفق الحيتان الحي، التمويل، الفائدة المفتوحة وبيانات السلسلة عبر 3 بورصات من واجهة برمجة تطبيقات واحدة. مستوى مجاني، بدون بطاقة ائتمان، ترقية في أي وقت.

ابدأ مجانًا →
جرب وحدة تحكم API المباشرة → (لا حاجة لحساب)