تكرار السؤال: …
الإجابة المختصرة
يفحص السيرفر الـ Cache أولاً؛ فإن وجد البيانات أعادها، وإلا جلبها من قاعدة البيانات وحفظها في الـ Cache مع تعيين مدة صلاحية (TTL)، ويتم إبطالها عند التعديل.
الشرح
في نمط Cache-Aside (Lazy Loading)، يتحكم تطبيق Node.js مباشرة في القراءة والكتابة للـ Cache (غالباً Redis). لضمان عدم تقديم بيانات قديمة، يجب تعيين مهلة صلاحية مدروسة (TTL)، مع تطبيق إبطال فوري للمفتاح عند تنفيذ أي عملية تحديث أو حذف، أو استخدام استراتيجيات مثل Write-Through في الأنظمة الحرجة.
مثال بالكود
const cached = await redis.get(key);
if (cached) return JSON.parse(cached);
const data = await db.fetch(id);
await redis.set(key, JSON.stringify(data), "EX", 300);
return data;أخطاء شائعة
- تخزين الكائنات في الـ Cache دون تعيين TTL مما يسبب تضخم الذاكرة وتقديم بيانات غير متزامنة للأبد.