إذًا، أنت ترغب في استخدام شبكة توصيل محتوى (CDN) لتسريع الوصول العالمي إلى الأصول المشتركة في منتدى Discourse الخاص بك؟ قد ترغب في الالتزام بالكامل والانتقال إلى Set up file and image uploads to S3 (انظر أيضًا Configure an S3 compatible object storage provider for uploads).
إذا كنت تريد شبكة توصيل محتوى (CDN) دون التعقيد الإضافي لـ S3 ووجود شبكتي CDN، فهذا هو الدليل المناسب لك. ستقلل شبكة توصيل المحتوى (CDN) بعض الحمل عن خادمك عن طريق السماح لشبكة توصيل المحتوى (CDN) بخدمة تلك الأصول حتى لا يضطر الخادم إلى ذلك. كما يمكنها تسريع الأمور عن طريق توصيل الملفات من موقع أقرب إلى المستخدم النهائي.
سجّل لدى شبكة توصيل المحتوى (CDN) التي تختارها - لقد استخدمت CDCK/discourse.org وتوصي بشدة بـ Fastly.
سيبدو التكوين شيئًا كهذا:

ما تبحث عنه هو ثلاثة إعدادات رئيسية:
-
عنوان المصدر (origin address)، وهو عنوان URL حيث يقع منتدىك حاليًا
discourse.example.com. هذا هو المكان الذي ستسحب منه شبكة توصيل المحتوى (CDN) جميع محتوياتها الأصلية عند الطلب الأول. -
اسم CNAME (CNAME)، وهو الاسم “الودي” لشبكة توصيل المحتوى (CDN) التي ستقوم بإعدادها في نظام أسماء النطاقات (DNS) الخاص بك، على سبيل المثال
discourse-cdn.example.com -
عنوان URL لشبكة توصيل المحتوى (CDN URL)، وهو الاسم “غير الودي” للمكان الذي ستأتي منه أصول شبكة توصيل المحتوى (CDN) المخزنة مؤقتًا عبر شبكة الخوادم الموزعة عالميًا لشبكة توصيل المحتوى (CDN). سيبدو كـ
637763234.cdn-provider.com
ستحتاج إلى تعديل نظام أسماء النطاقات (DNS) الخاص بك لربط اسم CNAME بعنوان URL لشبكة توصيل المحتوى (CDN)، كالتالي:
discourse-cdn.example.com IN CNAME 637763234.cdn-provider.com
(بمجرد تعديل نظام أسماء النطاقات (DNS)، امنحه بعض الوقت للانتشار.)
الجزء الفعلي الخاص بـ Discourse من الإعداد بسيط إلى حد ما. قم بإلغاء التعليق على سطر شبكة توصيل المحتوى (CDN) في ملف app.yml الخاص بك وقم بتحديثه باسم CNAME الذي قمت بإعداده للتو في نظام أسماء النطاقات (DNS) الخاص بك:
## عنوان http أو https لشبكة CDN لهذا المثيل من Discourse (تم التكوين للسحب)
DISCOURSE_CDN_URL: https://discourse-cdn.example.com
يجب أن يتضمن عنوان URL لشبكة توصيل المحتوى (CDN) بروتوكول (https:// أو http://). لم يعد دعم عناوين URL النسبية للبروتوكول (التي تبدأ بـ //) مدعومًا وسيؤدي إلى إيقاف بناء الحاوية.
(إذا لم تر هذا السطر في ملف app.yml الخاص بك، أضفه أسفل متغيرات DISCOURSE_ الأخرى)
كما هو الحال مع أي تغييرات أخرى على ملف app.yml الخاص بك، تحتاج إلى إعادة بناء الحاوية لتعكس التغييرات:
./launcher rebuild app
بمجرد إعادة البناء، تصفح مثيل Discourse الخاص بك في المتصفح. اعرض المصدر وابحث عن “cdn”. سترى أن أصول مواقع الويب تأتي الآن من شبكة توصيل المحتوى (CDN) الخاصة بك:
<script src="https://discourse-cdn.codinghorror.com/assets/preload_store-4ea79c2f435becca86ac97a9c038f9c7.js"></script>
<script src="https://discourse-cdn.codinghorror.com/assets/locales/en-7084a68855205a9128245d2d0ce94ed9.js"></script>
يغطي هذا الموضوع السيناريو الأكثر شيوعًا لتسريع الأصول الثابتة. راجع هذا الموضوع لتسريع الموقع بالكامل (الأصول الديناميكية والثابتة) عبر شبكة توصيل المحتوى (CDN) (كما هو موفر بواسطة Cloudflare). يعمل Cloudflare بشكل مختلف عن شبكة توصيل المحتوى (CDN) التقليدية، لذا فهذا ليس موضوعًا جيدًا لمناقشة Cloudflare.
شبكات توصيل محتوى (CDNs) أخرى تم الإبلاغ عن عملها تشمل:
- https://www.keycdn.com/ (CDCK من الأيام الأولى)
- MaxCDN (@sam: “شبكة CDN موثوقة” يناير 2017)
- StackPath (@Victor_Ashiedu يونيو 2022)
- Bunny.net (@pfaffman 2023)
- Cloudfront (يعتقد @pfaffman أن CDCK تستخدمهم على الأقل لأصول S3)
- gcore.com؟ (سجل @pfaffman، لكن لم يختبر أبريل 2023)