إصلاح: تجنب اجتياز مفاتيح Redis عند مسح ذاكرة التخزين المؤقت لموضوع 404

في #42413 ، تم إعادة تصميم منطق إبطال التخزين المؤقت للمواضيع.

ومع ذلك، فإن Discourse.cache.keys("page_not_found_topics:*").each { |key| Discourse.cache.redis.del(key) } سيقوم بتصفح جميع مفاتيح Redis، مما يسبب مشاكل في الأداء، وقد يؤدي إلى انتهاء المهلة إذا كان هناك عدد كبير من المفاتيح.

في هذا السياق، قد يواجه المستخدمون خطأ 500، إذا قاموا بنقل موضوع إلى فئة مقيدة.

تقيد هذه الإضافة نطاق التصفح بـ Discourse.cache.normalize_key("page_not_found_topics:#{locale}")، وهو أصغر بكثير من Redis بأكمله، كما تضيف اختباراً لتجنب تنفيذ scan_each. في #42413 ، تم إعادة تصميم منطق إبطال التخزين المؤقت للمواضيع.