كيف تحافظ تطبيقات تحويل العملات على تحديث أسعار الصرف؟
يبقى محوّل العملات محدثاً عندما يخزّن مشاهدة سعر كاملة، ويحدّثها بجدول منضبط، ويحافظ على وقت البيانات الحقيقي عند فشل الطلب أو إغلاق السوق.
لا يطلب المحوّل الموثوق رقماً جديداً مع كل عرض للصفحة. بل يحفظ السعر مع source وmarket_session وdata_updated_at، ويعيد استخدام المشاهدة مدة قصيرة، ولا يستبدلها إلا بعد تحديث ناجح. وقت الاستجابة يبين متى أجابت API، ووقت المشاهدة يبين متى تغير السعر نفسه.
rates وsources وmarket_session وdata_updated_at.data_updated_at لعمر البيانات؛ أما timestamp فهو وقت إنشاء الاستجابة.عامل الاستجابة كمشاهدة واحدة
السعر بلا بيانات وصفية غامض؛ فقد يكون مشاهدة فورية خلال اليوم، أو سعراً مرجعياً يومياً، أو تقاطعاً مشتقاً. احفظ الكائن كاملاً بدلاً من استخراج rates.EUR والتخلص من السياق. يعرّف مرجع API حقول الاستجابة، وتشرح المنهجية كيفية تعيين المصدر وحالة السوق.
يلخص source أقل فئة حداثة في استجابة متعددة العملات. اقرأ sources لكل عملة، ويحدد derived_symbols الأسعار المحسوبة عبر عملات وسيطة.
timestamp هو وقت تجهيز API للاستجابة. data_updated_at هو وقت كتابة المشاهدة الأساسية. استخدم الثاني للعرض وقرارات الحداثة.حدد سياسة التحديث قبل كتابة المؤقت
لا توجد مدة واحدة تناسب كل المنتجات. يمكن لسعر متجر تقريبي مشاركة ذاكرة مؤقتة لبضع دقائق، وقد يتحدث مركز العمليات وهو ظاهر، بينما يكفي التقرير اليومي طلب مجدول بعد السعر المرجعي المطلوب. الطلب مع كل عرض يهدر الاستدعاءات وقد يعيد المشاهدة نفسها.
تكون market_session واحدة من open أوweekend أوinterbank_closed. قد تتحرك العملات النشطة خلال أسبوع التداول، بينما تتحدث السلاسل المرجعية وفق جدولها.
أنشئ ذاكرة مؤقتة صغيرة على الخادم
رتّب العملات للحصول على مفتاح ثابت، وخزّن الاستجابات الناجحة فقط، وامنع التحديثات المتزامنة المكررة. يجب أن تبقى الطلبات الموثقة ومفتاح API على الخادم.
في النشر متعدد النسخ، استخدم مخزناً مشتركاً أو ذاكرة إطار العمل. يبقى العقد واحداً: القيمة وبيانات مشاهدتها معاً، ولا تستبدلان إلا بعد نجاح الطلب.
فشل التحديث لا ينشئ سعراً جديداً
المهلة أو 429 أو خطأ المنبع ليست مشاهدة سوق. إن سمح المنتج بآخر قيمة صالحة، احتفظ بـdata_updated_at الأصلي وأظهر حالة الرجوع. من دون قيمة سابقة، أعد خطأ. احترم Retry-After واستخدم تراجعاً أسياً مع عشوائية للأخطاء المؤقتة؛ أما 401 فيتطلب إصلاح الإعداد.
عند استجابة 429، احترم Retry-After إن وُجد، وامنع كل النسخ من إعادة المحاولة في الوقت نفسه. يناسب التراجع الأسي مع العشوائية الأعطال المؤقتة. أما أخطاء المصادقة فتتطلب إصلاح الإعداد، لا تكرار الطلب.
إغلاق السوق حالة صحيحة
قد تحمل استجابة market_session: weekend آخر مشاهدة من أسبوع التداول. لا تستبدل وقتها بوقت استجابة HTTP جديدة ولا تنشئ أسعاراً وهمية لعطلة نهاية الأسبوع.
يمكن للمحوّل إطالة مدة ذاكرة التطبيق أثناء إغلاق السوق، لكنه يجب أن يحدّث بعد استئناف أسبوع التداول. ابنِ القرار على حالة الجلسة المعادة ومتطلبات المنتج، لا على افتراض أن كل العملات تتبع جدولاً واحداً.
حوّل ثم قرّب مرة واحدة
عندما تكون القاعدة USD، يكون تحويل 25 USD إلى EUR هو 25 × rates.EUR. احتفظ بدقة السعر وقرّب المبلغ النهائي فقط وفق العملة الهدف.
قائمة فحص الإنتاج
- اطلب العملات التي تحتاجها الشاشة فقط.
- كوّن مفتاحاً من العملة الأساس والرموز المرتبة.
- خزّن الاستجابات الناجحة كاملة ولا تخزّن أخطاء HTTP.
- امنع تكرار التحديثات المتزامنة.
- اعرض
data_updated_atعندما يهم عمر السعر. - احتفظ بـ
sourcesوmarket_sessionوderived_symbols. - أبق مفتاح API على الخادم.
- عند استخدام آخر قيمة صالحة، احتفظ بوقتها الأصلي وأظهر حالتها.