تم إيقاف هذا المشروع مؤقتًا. قد نعود إليه في المستقبل وننشر تحديثًا هنا في حال ذلك.
نُطلق ميزة تجريبية جديدة لمساعدة المجتمعات التي تحتوي على عدد كبير من الفئات. ![]()
على مدار الأشهر القليلة الماضية، عملنا بجد لتحسين أداء مواقع Discourse للمجتمعات التي تمتلك العديد من الفئات (وليس فقط!). سيُمكّن هذا المسؤولَين من إنشاء آلاف الفئات مع الحفاظ على تجربة المستخدم الودية والمألوفة لديك.
لا تزال هذه ميزة تجريبية، ويمكن تفعيلها عن طريق تعديل إعداد الموقع lazy_loaded_categories_groups. وهي معطلة افتراضيًا حاليًا.
كيف تعمل هذه الميزة؟
في الوقت الحالي، يتم تحميل جميع بيانات الفئات عند تنقلك داخل مجتمع Discourse. يُطلق على هذا الأسلوب “التحميل المسبق” (eager loading)، وهو ليس مثاليًا للمواقع التي تحتوي على عدد كبير من الفئات، لأنه يعني نقل كمية كبيرة من المعلومات قبل العرض الأول، مما يزيد من وقت التحميل الإجمالي.
تُعرف الطريقة الجديدة بـ “التحميل الكسول” (lazy loading)، وستؤجل تحميل معلومات الفئة حتى تصبح ضرورية حقًا (على سبيل المثال، عند البحث عن فئة، أو التنقل إليها أو ربطها، أو قراءة موضوع أو مشاركة تذكر فئة معينة، إلخ). يعني نقل بيانات أقل وقت تحميل أسرع ومستخدمين أكثر سعادة! ![]()
ماذا يعني ذلك لك، كعضو في Meta؟
لقد قمنا باختبار هذه الميزة بشكل مكثف داخليًا، ولكن نظرًا لحجم العمل المنجز، هناك احتمال طفيف لإدخال أخطاء. إذا لاحظت أي خلل يتعلق بالفئات، يرجى إعلامنا من خلال الرد على هذا الموضوع أو فتح موضوع في قناة Contribute > Bug.
ماذا يعني ذلك لك أو لمجتمعك؟
سواء كنت مستضيفًا لدينا أو تستخدم الاستضافة الذاتية (self-hosted)، فإن هذه الميزة معطلة افتراضيًا، ولا ينبغي أن تكون هناك أي تغييرات مرئية.
ومع ذلك، إذا كنت تنوي توسيع مجتمعك ليشمل العديد من الفئات، فنحن نشجعك بشدة على تفعيل هذه الميزة.
في المستقبل، سنقوم بتفعيلها افتراضيًا، وفي النهاية سنُعتبرها قديمة (deprecated) ونزيل الكود المسؤول عن “التحميل المسبق” للفئات.
ماذا يعني ذلك لمطوري الإضافات والسمات؟
بشكل عام، لا ينبغي أن تكون هناك حاجة إلى تغييرات كبيرة لمعظم الإضافات، طالما أنها تستخدم مكونات الفئات من النواة (core) أو البيانات المحملة مسبقًا (على سبيل المثال، استعلام فقط عن الفئات المرئية بالفعل عند تحميل الصفحة، لأن ذلك يعني أنها تم تحميلها مسبقًا).
قد تظهر بعض المشكلات عند محاولة استخدام معلومات لفئات لم يتم تحميلها بعد. ستستمر طريقة Category.findByIds في إرجاع الفئات التي تم تحميلها فقط، بينما قد تقوم Category.asyncFindByIds بإجراء بحث على الخادم إذا لم تكن المعلومات محملة بعد.

















