كيفية موازنة التنزيلات عبر أسماء المضيف

قد توصي بعض أدوات اختبار سرعة النطاق الترددي بمواقع موازية للتنزيل عبرها أسماء المضيفين لتقديم محتوى الويب لمتصفحات الويب بشكل فعال. تحدث هذه التوصية عادةً على المواقع التي تستخدم بروتوكول HTTP / 1.1 وتحدث عندما تحد متصفحات الويب من عدد الاتصالات المتزامنة التي يتم إجراؤها إلى مجال.

مواقع الويب التي تحتوي على الكثير HTTP طلبات المحتوى الثابت (مثل الصور ، CSS وجافا سكريبت) تواجه تحذيرًا موازٍ للتنزيل عبر أسماء المضيفين. للتغلب على هذا القيد ، قم بإعداد تقسيم المجال أو استخدام شبكة توصيل المحتوى (CDN).

أصبح بروتوكول HTTP / 2 هو المعيار الرئيسي ، مما يجعل الحاجة إلى التنزيلات المتوازية قديمة. تستخدم معظم مضيفات الويب الآن HTTP / 2 افتراضيًا وتوفر شبكة CDN مجانية من نوع ما. نظرًا لأن HTTP / 2 هو تفضيل Google الآن ، ففكر في تحديث موقعك واستضافته إلى HTTPS.

لماذا موازية التنزيلات عبر أسماء المضيف؟

يمكن لمتصفحات الويب فتح عدد محدود فقط من الاتصالات المتزامنة لكل اسم مضيف لمواقع الويب التي تستخدم بروتوكول HTTP / 1.1. قد يصل هذا الحد إلى ستة اتصالات.

عند الحاجة إلى تنزيل المزيد من الموارد ، يجب أن تنتظر الموارد الإضافية في قائمة انتظار تراكمية حتى يتوفر اتصال. يتم حظر الموارد الموجودة في قائمة الانتظار ، ويؤدي تقليل وقت الحظر هذا إلى أوقات تحميل أسرع للصفحة.

instagram viewer

على سبيل المثال ، إذا كانت صفحة الويب تحتوي على 12 صورة وكان عدد الاتصالات التي يسمح بها متصفح الويب ستة ، فيجب أن تنتظر ست صور في التراكم. تظل الصور الموجودة في الأعمال المتراكمة هناك حتى تنتهي الصور الست الأولى من التنزيل.

إذا تم استخدام صورة مثل رمز أو شعار عدة مرات ، فاستخدم CSS Sprite لهذه الصور المتكررة لتقليل طلبات الموارد.

ما هو تحذير التنزيلات الموازية عبر أسماء المضيف؟

يعد تحذير موازاة التنزيلات عبر أسماء المضيفين قاعدة مستخدمة في بعض أدوات فحص أداء مواقع الويب. يشير التحذير إلى أن مستعرض الويب هذا لا يمكنه فتح عدد الاتصالات المطلوبة لتنزيل جميع موارد موقع الويب في وقت واحد.

بالنسبة لمواقع الويب التي تستخدم بروتوكول HTTP / 1.1 ، فإن طريقة التغلب على هذه الحاجة لمزيد من الاتصالات المفتوحة هي تقليل طلبات HTTPأو إعداد CDN أو تنفيذ تقسيم المجال.

بالنسبة إلى مواقع الويب التي تستخدم بروتوكول HTTP / 2 ، يمكن تحميل موارد متعددة بشكل متوازٍ عبر اتصال واحد ؛ هذا يسمى مضاعفة. تعدد الإرسال يجعل تقسيم المجال غير ضروري باستخدام HTTP / 2. يدعم حوالي 77 بالمائة من متصفحات الويب HTTP / 2 ولا يجب أن تواجه أي مشكلة في موازاة التنزيلات.

إذا كان موفر استضافة الويب الخاص بك يدعم HTTP / 2 ، فمن الآمن تجاهل تحذير التنزيلات المتوازية عبر أسماء المضيفين. باستخدام HTTP / 2 ، يمكن تنزيل موارد متعددة بشكل متوازٍ على اتصال واحد.

ما هو المجال تقاسم؟

تجزئة النطاق هي طريقة لتحسين الأداء لاتصالات HTTP / 1.1 وتُستخدم على مواقع الويب التي تحتوي على عدد كبير من طلبات HTTP. في تقسيم المجال ، يتم توزيع أصول محتوى الويب بين عدة نطاقات فرعية. عند توزيع الأصول بهذه الطريقة ، يزداد عدد الطلبات المتزامنة التي يمكن معالجتها.

في تقسيم المجال ، يتم تحميل المحتوى على نطاقات فرعية خالية من ملفات تعريف الارتباط. لا يتفاعل المستخدمون مع المحتوى الثابت مثل الصور وملفات JavaScript و CSS ، لذلك لا يلزم إرفاق هذا المحتوى بملفات تعريف الارتباط.

عندما لا تقدم النطاقات الفرعية ملفات تعريف الارتباط ، فإن حجم الطلبات المقدمة للصفحة ويطلب تقليل وقت الاستجابة ، ويتم تحميل صفحات الويب بشكل أسرع. تتضمن أمثلة المحتوى الذي يستفيد من تجزئة النطاق الصفحات ذات المحتوى الذي نادرًا ما يتم تخزينه مؤقتًا ، مثل صفحة الصور المصغرة أو أرشيف الصور.

في دروبال ، تضيف الوحدات النمطية ملفات CSS و JavaScript التي يمكن أن تبطئ الأداء. اذهب إلى تكوين الموقع > أداء وتحسين CSS و JavaScript.

للاستفادة من مزايا تجزئة النطاق على اتصالات HTTP / 1.1 ، اتبع هذه النصائح:

  • خدمة الموارد من نفس المجالات الفرعية لتخزين الملفات بكفاءة.
  • توزيع الموارد بالتساوي بين المجالات الفرعية.
  • شراء شهادات SSL للنطاقات الفرعية.

في اتصالات HTTP / 2 ، تقلل تجزئة النطاق الأداء نظرًا لوجود عمليات بحث إضافية عن DNS. تزيد عمليات بحث DNS هذه من وقت الحل ولا تخزن الملفات مؤقتًا. يضيف تقسيم المجال أيضًا وقتًا لكل اتصال جديد. هذه عيوب أخرى لتقسيم المجال على اتصالات HTTP / 2:

  • يصعب توزيع الموارد التي يتم تحميلها من CSS بين المضيفين المُقسَّمين.
  • زيادة الحمل على الخادم من زيادة عدد الاتصالات المتزامنة.
  • يمكن أن يؤدي نقل المحتوى الثابت إلى نطاق فرعي إلى كسر الشفرة.
  • قد لا يسمح مستعرض الويب بالوصول إلى اسم مضيف مختلف.
  • قد لا تتمكن أجهزة التوجيه من تصنيف عدد كبير من الطلبات المُقسمة أو قد ترى الطلبات على أنها هجوم رفض الخدمة.

كيفية موازنة التنزيلات عبر أسماء المضيف

عندما تتلقى التحذير الموازي للتنزيل عبر أسماء المضيفين ، ستحتاج إلى زيادة موازاة التنزيل من خلال توزيع الطلبات بين أسماء مضيفين متعددة. لتوزيع الطلبات ، أنشئ نطاقات فرعية لأنواع مختلفة من أصول الويب المستخدمة على الموقع ، ثم حدد المجال الجذر باعتباره المجال الوحيد الذي يستخدم ملفات تعريف الارتباط. المجالات الفرعية لا تستخدم ملفات تعريف الارتباط.

تضيف هذه المجالات الفرعية مصادر جديدة للاتصالات التي يمكن للمتصفح إجراؤها ، وتمكن من تنزيل المزيد من الموارد في وقت واحد. عندما يتم تقسيم الموارد بين المجالات الفرعية ، يقضي متصفح الويب وقتًا أقل في حظر محتوى الويب وتحميل صفحات الويب بشكل أسرع.

بالنسبة إلى مواقع الويب التي تستخدم HTTP / 2 و HTTP / 1.1 ، فإن أسهل طريقة لموازنة التنزيلات عبر أسماء المضيفين هي استخدام نطاقات فرعية متعددة من خلال CDN. بالنسبة لمواقع الويب التي تستخدم HTTP / 1.1 و WordPress ، قم بإعداد المجالات الفرعية وتعديل ملف jobs.php الخاص بـ WordPress.

إعداد المجالات الفرعية

لتوزيع الموارد عبر النطاقات الفرعية ، أنشئ نطاقًا واحدًا على الأقل وما يصل إلى أربعة نطاقات فرعية ؛ يوصى بنطاق فرعي واحد أو اثنين. الطريقة الأكثر شيوعًا لإنشاء نطاقات فرعية هي استخدام cPanel ، والتي تقدمها معظم خدمات استضافة الويب.

أمثلة على المجالات الفرعية هي:

  • media1.mydomain.com
  • media2.mydomain.com
  • media3.mydomain.com
  • media4.mydomain.com

أيضًا ، يجب أن يكون للنطاقات الفرعية وأسماء المضيف نفس البنية والمسار. على سبيل المثال ، إذا كان مسار الصورة على المضيف هو www.mydomain.com/wp-content/uploads/ ، فيجب أن يتطابق مسار الصورة على المجالات الفرعية ، على سبيل المثال ، media1.mydomain.com/wp-content/uploads/.

قم بإعداد CDN لتوازي التنزيلات

بعد إعداد CDN وإنشاء المجالات الفرعية ، قم بتوجيه كل مجال فرعي إلى المجلد الذي يحتوي على المحتوى الثابت. بهذه الطريقة ، يتم تحميل المحتوى عبر النطاق الفرعي بدلاً من المجال الرئيسي.

لتوجيه مجال فرعي ، استخدم محرر منطقة DNS في cPanel لإنشاء سجل CNAME جديد لكل مجال فرعي. في حقل الاسم للسجل ، أدخل النطاق الفرعي ، على سبيل المثال ، media.mydomain.com. في حقل CNAME ، أدخل المجال الرئيسي ، على سبيل المثال ، www.mydomain.com.

بعد إنشاء سجلات CNAME ونشرها بواسطة مضيف الويب ، أضف سجلات CNAME إلى إعدادات منطقة CDN.

قم بتحرير ملف تكوين موقع الويب في WordPress لموازنة التنزيلات

بعد إعداد النطاقات الفرعية ، أضف هذا الرمز إلى ملف function.php لموضوع WordPress المستخدم لموقعك على الويب. استبدل media1.mydomain.com و media2.mydomain.com بنطاقاتك الفرعية الفعلية.

دالة متوازية_هوستناميس ($ url ، $ id) {
$ hostname = par_get_hostname ($ url) ؛ // استدعاء الوظيفة التكميلية
$ url = str_replace (parse_url (get_bloginfo ('url')، PHP_URL_HOST)، $ hostname، $ url)؛
العودة $ url؛
}
الوظيفة par_get_hostname (اسم $) {
$ subdomains = مجموعة ('media1.mydomain.com'، 'media2.mydomain.com')؛ // أضف نطاقاتك الفرعية هنا ، بقدر ما تريد.
$ host = abs (crc32 (basename ($ name))٪ count ($ subdomains)) ؛
$ hostname = المجالات الفرعية $ [$ host]؛
إرجاع اسم المضيف $؛
}
add_filter ('wp_get_attachment_url'، 'موازاة_الأسماء المضيفة'، 10، 2) ؛

إذا كنت تستخدم Jetpack مع WordPress ، فقم بتمكين خدمة Site Accelerator لوضع صورك على CDN مُدار بواسطة WordPress.