إبطال صفحات الفئة المخزنة مؤقتًا (صفحة 1 ، صفحة 2 إلخ) عند إضافة منشور جديد؟

StackOverflow https://stackoverflow.com/questions/3711525

سؤال

دعونا نتخيل أن لدينا مدونة مع فئة A. فئة A حاليا لديه 1000 وظيفة على 100 صفحة. جميع الصفحات مخزنة مؤقتًا في الملفات (على سبيل المثال ، مخزنة مؤقتًا بواسطة محرك قالب Smarty). سأضيف منشورًا وأريد عرضه على الصفحة الأولى على الفور. لذلك ، لا بد لي من مسح أو إبطال ذاكرة التخزين المؤقت لجميع صفحات 100 من الفئة أ.

يعد حذف الصفحات المخبأة فكرة جيدة لأننا يمكن أن يكون لدينا الكثير من الملفات (على سبيل المثال ، الآلاف من الصفحات). أعتقد أن إبطال ذاكرة التخزين المؤقت وتجديد الصفحة عند الطلب هو طريقة أكثر كفاءة.

فكرتي الوحيدة هي إضافة number of posts in category إلى معرف ذاكرة التخزين المؤقت. لذلك ، أولاً ، يجب أن نحصل على عدد من المنشورات في الفئة (على سبيل المثال ، من Memcache) ثم تحقق مما إذا كان الإصدار المخحيط صالحًا في هذا الرقم.

كل شيء يبدو على ما يرام وبسيطة. ولكن دعونا نتخيل الموقف عندما أضيف منشورًا جديدًا ثم بعد دقيقة واحدة أقوم بإزالة منشور آخر (أقدم). لا يزال عدد المشاركات 1000 وسيظل بعض صفحات الفئة قديمة (إذا لم تتم مشاهدتها خلال هذه دقيقة واحدة).

ماهو الحل؟

ملاحظة: آسف على لغتي الإنجليزية ، لكنني أعتقد أن سؤالي سيكون واضحًا من الأشخاص الذين واجهوا هذه المشكلة بالفعل.

شكرًا لك

هل كانت مفيدة؟

المحلول

عدد المنشورات ليس حلاً جيدًا لأنه عندما تقوم بتحرير بعض المنشورات ، فأنت تريد تحديث ذاكرة التخزين المؤقت أيضًا.

زوجان من الاستراتيجيات التي يمكنني التفكير فيها:

  • استخدم الوقت عندما تم إجراء تغيير كمرجع.

عند إضافة منشور جديد (إزالة ، تحرير) - تخزين الطابع الزمني الحالي في فئة ، دعنا نسميها cache_threshold. عندما يتم طلب صفحة - تحقق عندما تم تخزين هذه الصفحة. إذا كان أقدم من عتبةنا - يجب تجديد الصفحة.

  • قم بالتبديل إلى التخزين المؤقت للكائن بدلاً من التخزين المؤقت للصفحة.

بدلاً من التخزين المؤقت للصفحات بأكملها ، يمكنك تخزين كل منشور فردي. إذا تمت إضافة منشور جديد (تم إزالته ، تم تحريره) ، فستقوم بتجديد ذاكرة التخزين المؤقت على الفور لأنه لا يستغرق وقتًا طويلاً. لعرض الصفحة ، ستحتاج فقط إلى الحصول على كمية مطلوبة من المنشورات المخزنة مؤقتًا وعرضها.

يتطلب هذا الحل المزيد من العمل ولكنه أكثر مرونة وفعالية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top