Fastly وCloudFlare وعدد قليل من شبكات توصيل المحتوى (CDNs) الأخرى تقدم وضعًا تقوم فيه بتسريع المحتوى الديناميكي.
باختصار، توجه عنوان IP الخاص بالنطاق الخاص بك إلى شبكة توصيل المحتوى وستقرر الشبكة بذكاء كيفية التعامل مع الطلب.
- يمكن تقديم المحتوى الثابت بسهولة من ذاكرة التخزين المؤقت
- يمكن توجيه المحتوى الديناميكي إلى الموقع.
يوفر هذا بعض المزايا على مجرد شحن الأصول الثابتة التي تمت تغطيتها في دليل شبكة توصيل المحتوى.
- يمكنك اختيار “الحماية shielding” التي تحمي موقعك من زيادات حركة المرور.
- يمكن تسريع المحتوى الديناميكي باستخدام تقنيات مثل ضغط دلتا. (ملاحظة: بشكل عام، تتناسب حمولتنا مع 1 RTT لذا فإن هذا له تأثير أقل)
- يمكن إجراء مفاوضات SSL عند الحافة مما يقلل من الرحلات ذهابًا وإيابًا المكلفة للمفاوضات.
إذا قمت بتمكين تسريع الموقع بالكامل باستخدام شبكة توصيل محتوى، فمن الضروري اتباع 3 قواعد
-
يجب تقديم “ناقل الرسائل” يجب أن يتم تقديمه من المصدر.
-
تحتاج إلى إعداد الثقة في X-Forwarded-For. بالنسبة لـ Cloudflare، أضف
cloudflare.template.ymlإلى ملفapp.ymlالخاص بك. -
كن حذرًا للغاية بشأن التقنيات التي تطبق التحسين على الموقع، فالأشياء مثل Rocket Loader يمكن أن توقف عمل Discourse. تم تحسين Discourse بالفعل بشكل كبير، وهذا ليس ضروريًا.
لتقديم طلبات “الاستقصاء الطويل long polling” من نطاق مختلف، قم بتعيين إعداد الموقع المخفي long_polling_base_url إلى خادم المصدر. يتم تكوين هذا على أفضل وجه عن طريق إضافة متغير البيئة DISCOURSE_LONG_POLLING_BASE_URL في ملف app.yml الخاص بك، أو عبر وحدة تحكم Rails.
على سبيل المثال، إذا كان موقعك على “http://forum.example.com”، فيجب عليك إعداد http://forum-direct.example.com/ للربط بإعداد الموقع. إذا لم تفعل ذلك، فسيتعطل موقعك.
إذا كنت تضع Discourse خلف Varnish، فمن المحتمل أن ترغب في اتباع نفس الحيلة هنا وتجاوز Varnish لطلبات ناقل الرسائل.
ملاحظات فنية مملة:
إن تحقيق ناقل رسائل يعمل على نطاق مختلف تمامًا أمر صعب للغاية. ناقل الرسائل لدينا على دراية بالمستخدم الذي يقوم بالاستقصاء، وقد لا يحتوي النطاق الآخر على ملف تعريف ارتباط مُعد، لذا دون مساس هناك مشكلتان. أولاً، لا يمكنك حتى إجراء طلبات ajax قياسية عبر النطاقات دون رقصة CORS هائلة.
ثانيًا، احتجنا إلى آلية لإبلاغ النطاق الآخر بهوية المستخدم حتى نتمكن من الاستقصاء للحصول على المعلومات الصحيحة.
عندما يتم تغيير عنوان URL الأساسي للاستقصاء الطويل، تقوم Discourse بشحن علامة وصف (meta tag) إضافية تشارك رمز مصادقة “عبر النطاقات”. يتم تمرير هذا الرمز باستخدام رأس مخصص مرة أخرى إلى ناقل الرسائل. تنتهي صلاحية الرمز المميز بعد 7 أيام أو بمجرد تسجيل خروج المستخدم.
يمكنك رؤية معظم التنفيذ هنا: FEATURE: allow long polling to go to a different url · discourse/discourse@aa9b3bb · GitHub

