ينشر Discourse الآن أصول JavaScript مُعدة مسبقًا، مما سيسرع بشكل كبير عملية التثبيت والتحديثات، خاصة للخوادم ذات الموارد المحدودة.
لطالما كانت عملية تجميع وتحسين أصول JavaScript واحدة من أكثر العمليات استهلاكًا للموارد في تشغيل Discourse. مع تطور قاعدة الكود الخاصة بنا ونظام JavaScript البيئي، أصبحت هذه العملية أكثر تطلبًا.
في اختباراتنا، تقلل هذه التغييرات من وقت بناء الأصول على خادم Digital Ocean بسعة 1 جيجابايت من ذاكرة الوصول العشوائي من 45 دقيقة إلى 3 دقائق فقط.
كيف يعمل؟
عند دمج كل التزام في main، يقوم سير عمل GitHub Actions ببناء وتجميع الأصول في ملفات .tar.gz (واحد للإنتاج، وواحد للتطوير). يتم نشر هذه الحزم عبر إصدارات GitHub في مستودع مخصص. نضمن نشر الأصول قبل أن ينتقل أي التزام إلى tests-passed.
عند بناء موقعك الخاص، يتحقق Discourse الآن من وجود حزمة مُعدة مسبقًا مطابقة ويقوم بتنزيلها. ثم يتم بناء الإضافات فوقها. إذا لم يتم العثور على حزمة أو حدث خطأ، يعود Discourse إلى البناء من المصدر.
هل يؤثر هذا على المستخدمين النهائيين؟
لا. لا تزال الأصول تُقدم للمستخدمين النهائيين من الخادم الخاص بك / شبكة توصيل المحتوى (CDN).
هل يمكنني إلغاء الاشتراك؟
نعم! إذا كنت تفضل بناء أصولك الخاصة ولديك خادم قوي بما فيه الكفاية، قم بتعيين DISCOURSE_DOWNLOAD_PRE_BUILT_ASSETS: 0 في ملف app.yml الخاص بك.
ماذا لو كنت أقوم بتشغيل نسخة من Discourse مُشعبة أو مُعدلة؟
تتم تسمية حزم الأصول حسب تجزئة الالتزام. إذا كنت تقوم بتشغيل نسخة مشعبة، فلن يتم العثور على حزمة وسيتم بناء الأصول من المصدر. إذا كانت نسخة Discourse الخاصة بك مُعدلة (أي أن شجرة العمل في git ليست نظيفة)، فلن يحاول Discourse تنزيل حزمة.
ماذا عن خطوات البناء الأخرى المتعلقة بالأصول؟
حاليًا، ينطبق هذا التحسين فقط على أصول JavaScript الأساسية. في المستقبل، قد نقوم بتوسيعه ليشمل بعض الإضافات وخطوات أخرى مثل ضغط gz/brotli.
ماذا عن الفرع المستقر؟
سيتم نشر الأصول المُعدة مسبقًا للفرع المستقر بدءًا من التحديث الرئيسي التالي، والمخطط له في أغسطس 2025.