[لا تستخدم] CDN

في أي مقال أو أداة تقريبًا لتحسين سرعة المواقع ، يوجد عنصر متواضع "استخدام CDN". بشكل عام ، شبكة CDN هي شبكة توصيل محتوى. في Method Lab ، نجتمع غالبًا مع أسئلة العملاء حول هذا الموضوع ، وبعضها يتضمن CDNs بمفردهم. الغرض من هذه المقالة هو فهم ما يمكن لشبكة CDN القيام به من حيث سرعة تحميل الموقع ، وما هي المشاكل التي يمكن أن تنشأ وفي الحالات التي يكون فيها استخدام CDN مبرراً

صورة

سبب التأخير في الصورة هو استخدام CDN.

قليلا من التاريخ


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

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

تم حل مشكلة الحد من القناة لخادم منفصل تمامًا بواسطة CDN. لا يتصل العملاء مباشرة بالخادم ، ولكن بالعُقد الخاصة بشبكة CDN. في الحالة المثالية ، يمنح الخادم دفقًا واحدًا إلى CDN ، ثم تستخدم الشبكة مواردها الخاصة لتوصيل هذا الدفق إلى العديد من المستخدمين. من وجهة نظر اقتصادية ، نحن ندفع فقط مقابل الموارد المستهلكة فعليًا (قد يكون هذا النطاق الترددي أو حركة المرور) ونحصل على قابلية ممتازة لتطوير خدمتنا. استخدام شبكات CDN لتقديم محتوى ثقيل له ما يبرره ومنطقي تمامًا. على الرغم من أنه من الجدير بالذكر أن أكبر اللاعبين في هذا المجال (على سبيل المثال ، Netflix) يبنون شبكات أسماء النطاقات الخاصة بهم بدلاً من استخدام شبكات CDN التجارية الكبيرة (Akamai ، Cloudflare ، Fastly ، وما إلى ذلك)

مع تطور الويب ، تصبح تطبيقات الويب نفسها أكثر تعقيدًا وأثقل. ظهرت مشكلة سرعة التنزيل في المقدمة. اكتشف عشاق سرعة الموقع العديد من المشكلات الرئيسية التي أدت إلى بطء تحميل الموقع. كان واحد منهم الكمون الشبكة (RTT - وقت رحلة مستديرة أو وقت بينغ). تؤثر التأخيرات على العديد من العمليات عند تحميل موقع: تأسيس اتصال TCP ، بدء جلسة TLS ، تحميل كل مورد على حدة (الصور ، ملف JS ، مستند HTML ، إلخ)

تفاقمت المشكلة بسبب أنه عند استخدام ثقب HTTP / 1.1 (قبل أن يكون SPDY و QUIC و HTTP / 2 هو الخيار الوحيد) ، لا تفتح المستعرضات أكثر من 6 اتصالات TCP إلى مضيف واحد. كل هذا أدى إلى اتصال بسيط واستخدام غير فعال لعرض النطاق الترددي للقناة. تم حل المشكلة جزئيًا عن طريق مشاركة المجال - إنشاء مضيفين إضافيين للتغلب على الحد الأقصى لعدد الاتصالات.

هنا تأتي القدرة الثانية لشبكة CDN - تقليل التأخير (RTT) بسبب العدد الكبير من النقاط وقرب العقد من المستخدم. تلعب المسافة هنا دورًا حاسمًا: سرعة الضوء محدودة (حوالي 200000 كم / ثانية في الألياف الضوئية). هذا يعني أن كل 1000 كم من المسير يضيف 5 مللي ثانية من التأخير أو 10 مللي ثانية إلى RTT. هذا هو الحد الأدنى لوقت الإرسال ، حيث لا يزال هناك تأخير في المعدات الوسيطة. نظرًا لأن CDN عادة ما يمكنه تخزين كائنات على خوادمه ، يمكننا الاستفادة من تحميل هذه الكائنات من خلال CDN. المتطلبات الأساسية لهذا: وجود كائن في ذاكرة التخزين المؤقت ، وقرب CDN يشير إلى المستخدم بالمقارنة مع خادم تطبيق الويب (خادم الأصل). من المهم أن نفهم أن القرب الجغرافي لشبكة CDN لا يضمن الكمون المنخفض. يمكن تصميم التوجيه بين العميل و CDN بحيث يتصل العميل بمضيف في بلد آخر ، وربما في قارة أخرى. هنا ، يتم تفعيل العلاقات بين مشغلي الاتصالات وخدمة CDN (النظراء ، ووجود واجهات ، والمشاركة في IX ، وما إلى ذلك) وسياسة توجيه حركة المرور الخاصة بشبكة CDN نفسها. على سبيل المثال ، عند استخدام خطتين أوليتين (مجانًا ورخيصة) ، لا تضمن Cloudflare تسليم المحتوى من أقرب موقع - سيتم اختيار المضيف لتحقيق الحد الأدنى من التكلفة.

جذبت العديد من شركات الإنترنت الرائدة اهتمام الجمهور (مطورو الويب وأصحاب الخدمات) في موضوع سرعة التنزيل وأداء الموقع. من بين هذه الشركات: Yahoo (tool Yslow) و AOL (WebPageTest) و Google (Service Page Speed ​​Insights) ، التي تعمل على تطوير توصياتها بشأن تسريع موقع الويب (في المقام الأول ، تتعلق بتحسين العميل). في وقت لاحق ، تظهر أدوات جديدة لاختبار سرعة المواقع ، والتي تقدم أيضًا نصائح حول زيادة سرعة المواقع. في كل من هذه الخدمات أو الإضافات ، هناك توصية دون تغيير "Use CDN". كتفسير لتأثير شبكة CDN ، يشار بشكل عام إلى انخفاض تأخيرات الشبكة. لسوء الحظ ، ليس كل شخص على استعداد لفهم كيفية تحقيق تأثير التسارع من CDN وكيف يمكن قياسه ، لذلك يتم أخذ التوصية على الإيمان ويستخدم كإفتراض. في الواقع ، ليست كل شبكات CDN مفيدة بنفس القدر.

باستخدام CDN اليوم


لتقييم فائدة استخدام شبكات CDN ، يجب تصنيفها. ما يمكن العثور عليه الآن في الممارسة العملية (الأمثلة الموجودة بين قوسين ليست بالتأكيد شاملة):

  1. شبكات CDN المجانية لتوزيع مكتبات JS (MaxCDN ، Google. Yandex).
  2. خدمات CDN لتحسين العميل (على سبيل المثال ، خطوط Google للخطوط ، Cloudinary ، Cloudimage للصور).
  3. CDN للإحصاء وتحسين الموارد في CMS (متوفر في Bitrix و Wordpress وغيرها).
  4. CDN للأغراض العامة (StackPath ، CDNVideo ، NGENIX ، Megaphone).
  5. DNS لتسريع الموقع (Cloudflare ، Imperva ، Airi).

الفرق الرئيسي بين هذه الأنواع هو ما يلي: أي جزء من حركة المرور يمر عبر CDN. الأنواع 1-3 هي تسليم جزء فقط من المحتوى: من طلب واحد إلى عدة عشرات (عادةً صور). أنواع 4 و 5 هي حركة مرور وكيل كاملة من خلال CDN.

في الممارسة العملية ، هذا يعني عدد الاتصالات المستخدمة لتنزيل الموقع. عند استخدام HTTP / 2 ، نستخدم اتصال TCP واحدًا للمضيف لمعالجة أي عدد من الطلبات. إذا شاركنا الموارد على المضيف الرئيسي (الأصل) و CDN ، فمن الضروري توزيع الطلبات عبر عدة مجالات وإنشاء عدة اتصالات TCP. في أسوأ الحالات ، هذا هو: DNS (1 RTT) + TCP (1 RTT) + TLS (2-3 RTT) = 6-7 RTT. لا تأخذ هذه الصيغة في الاعتبار التأخير في شبكات المحمول على تنشيط قناة الراديو الخاصة بالجهاز (إذا لم تكن نشطة) والتأخير في برج الخلية.

إليك ما يبدو عليه أثناء تحميل شلال الموقع (يتم تمييز التأخير للاتصال بشبكة CDN مع RTT 150 مللي ثانية):

صورة

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

يتم تحديد الاختلافات الإضافية بواسطة وظيفة CDN معينة - بالنسبة للنوع الأول ، هذا يستضيف ملفًا ثابتًا فقط ، أما بالنسبة إلى الخامس ، فهو يغير عدة أنواع من محتوى الموقع من أجل تحسينه.

CDN ميزات تسريع الموقع


دعنا نصف المجموعة الكاملة من إمكانات تسريع مواقع الويب الخاصة بشبكة CDN ، دون النظر إلى وظيفة الأنواع الفردية من شبكات CDN ، ثم انظر إلى ما يتم تنفيذه في كل منها.

1. ضغط موارد النص


الميزة الأساسية وميزة مفهومة ، ومع ذلك ، غالبا ما يتم تنفيذها بشكل سيء. يعلن وجود ضغط أن جميع CDN هي ميزاتها للتسريع. ولكن إذا نظرت بمزيد من التفصيل ، فسيتم توضيح العيوب:

  • درجات منخفضة يمكن استخدامها للضغط الديناميكي - 5-6 (على سبيل المثال ، gzip بحد أقصى - 9) ؛
  • في ضغط ثابت (ملفات في ذاكرة التخزين المؤقت) لا يتم استخدام ميزات إضافية (على سبيل المثال ، zopfi أو brotli بقوة 11)
  • لا يوجد دعم لضغط brotli الفعال (يوفر حوالي 20٪ مقارنة بـ gzip).

إذا كنت تستخدم CDN ، يجب عليك التحقق من هذه النقاط القليلة: خذ الملف الذي جاء من CDN ، وحدد حجمه في شكل مضغوط وضغطه يدويًا للمقارنة (يمكنك استخدام بعض الخدمات عبر الإنترنت مع دعم brotli ، على سبيل المثال ، compress.rf ).

2. إعداد عميل التخزين المؤقت رؤوس


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

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

3. تحسين الصورة


نظرًا لأن CDN يتولى مهام التخزين المؤقت للصور وتحميلها ، سيكون من المنطقي تحسينها على جانب CDN ومنحها للمستخدمين في هذا النموذج. لنقم بالحجز على الفور ، هذه الميزة متاحة فقط لأنواع CDN 2 و 3 و 5.

يمكنك تحسين الصور بعدة طرق: استخدام تنسيقات ضغط متقدمة (على سبيل المثال ، WebP) أو برامج تشفير أكثر كفاءة (MozJPEG) ، أو ببساطة تنظيف البيانات الوصفية غير الضرورية.

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

4. تعظيم الاستفادة من اتصال TLS


يتم نقل معظم حركة المرور اليوم عبر اتصالات TLS ، مما يعني أننا نمضي وقتًا إضافيًا في مفاوضات TLS. في الآونة الأخيرة ، تم تطوير تقنيات جديدة لتسريع هذه العملية. على سبيل المثال ، إنها تشفير EC و TLS 1.3 وذاكرة التخزين المؤقت للجلسة وتذاكر السفر (تذاكر الجلسة) وتسريع تشفير الأجهزة (AES-NI) ، إلخ. يمكن للتهيئة المناسبة لـ TLS تقليل وقت الاتصال إلى 0-1 RTT (لا يشمل DNS و TCP ).

في وجود البرامج الحديثة ، ليس من الصعب تنفيذ هذه الممارسات في منشآتنا الخاصة.

لا تنفذ كل شبكات CDN أفضل ممارسات TLS ؛ يمكن التحقق من ذلك عن طريق قياس وقت اتصال TLS (على سبيل المثال ، في Webpagetest). مثالية للاتصال الجديد - 1RTT ، 2RTT - المستوى المتوسط ​​، 3RTT وأكثر - سيئة.

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

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

5. الحد من تأخير الاتصال


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

في الممارسة العملية ، قد تكون أولويات الشبكات المختلفة موجودة في مناطق محددة. على سبيل المثال ، سيكون لشبكات CDN الروسية المزيد من نقاط التواجد في روسيا. ستقوم أمريكا في المقام الأول بتطوير شبكة في الولايات المتحدة. على سبيل المثال ، واحدة من أكبر شبكات CDN Cloudflare لديها نقطتان فقط في روسيا - موسكو وسان بطرسبرغ. وهذا هو ، قدر الإمكان ، يمكننا توفير حوالي 10 مللي ثانية من التأخير مقارنة مع الإقامة المباشرة في موسكو.

معظم شبكات CDN الغربية ليس لها نقاط في روسيا على الإطلاق. من خلال الاتصال بهم يمكنك فقط زيادة التأخير لجمهورك الروسي.

6. تحسين المحتوى (التصغير ، التغييرات الهيكلية)


العنصر الأكثر تعقيدا والتكنولوجية. يمكن أن يكون تغيير المحتوى عند التسليم مخاطرة كبيرة. حتى لو أخذنا التصغير: يمكن أن يؤثر تقليل الشفرة المصدرية (بسبب المساحات الإضافية ، الإنشاءات غير المهمة ، إلخ) على أدائها. إذا تحدثنا عن تغييرات أكثر جدية - نقل رمز JS إلى نهاية HTML ، ودمج الملفات ، وما شابه ذلك - فإن خطر تعطيل وظيفة الموقع يكون أعلى.

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

وكقاعدة عامة ، يتم التحكم في كل هذه التحسينات ويتم تعطيل أخطرها بشكل افتراضي.

تسريع الدعم حسب نوع CDN


لذلك ، دعونا نرى أيًا من خيارات التسريع المحتملة التي توفرها أنواع مختلفة من شبكات CDN.

للراحة ، نكرر التصنيف.

  1. شبكات CDN المجانية لتوزيع مكتبات JS (MaxCDN ، Google. Yandex).
  2. خدمات CDN لتحسين العميل (على سبيل المثال ، خطوط Google للخطوط ، Cloudinary ، Cloudimage للصور).
  3. CDN للإحصاء وتحسين الموارد في CMS (متوفر في Bitrix و Wordpress وغيرها).
  4. CDN للأغراض العامة (StackPath ، CDNVideo ، NGENIX ، Megaphone).
  5. DNS لتسريع الموقع (Cloudflare ، Imperva ، Airi).

الآن قارن ميزات وأنواع CDN.

فرصةاكتب 1اكتب 2اكتب 3اكتب 4اكتب 5
ضغط النص+ --+ -+ -+
رؤوس ذاكرة التخزين المؤقت+++++
الصور-+ -+ --+
TLS---+ -+
تأخير---++
محتوى----+


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

النتائج


آمل أنه بعد قراءة هذه المقالة سيكون لديك صورة أوضح فيما يتعلق بالتوصية "استخدام CDN" لتسريع المواقع.

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

ربما يؤدي استخدام CDN إلى إبطاء عملية تحميل موقعك الآن.

كتوصية عامة ، يمكنك التركيز على ما يلي: دراسة جمهورك وتحديد نطاقه الجغرافي. إذا كان جمهورك الرئيسي يتركز في دائرة نصف قطرها 1-2 ألف كيلومتر ، فلن تحتاج إلى CDN للغرض الرئيسي - لتقليل التأخير. بدلاً من ذلك ، يمكنك وضع الخادم بالقرب من المستخدمين وتكوينه بشكل صحيح ، والحصول على معظم التحسينات الموضحة في المقالة (مجانية ودائمة).

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

Source: https://habr.com/ru/post/ar471090/


All Articles