تحسين الأداء باستخدام شبكة توصيل المحتوى.
تعمل شبكات توصيل المحتوى (CDN) على تحسين أداء المواقع الإلكترونية من خلال استخدام شبكة موزَّعة من الخوادم لتوفير الموارد للمستخدمين. وبما أنّ شبكات توصيل المحتوى (CDN) تقلل حِمل الخادم، فإنّها تقلّل تكاليف الخادم وهي مناسبة تمامًا للتعامل مع الارتفاعات المفاجئة في حركة البيانات. تناقش هذه المقالة طريقة عمل شبكات توصيل المحتوى (CDN) وتقدّم إرشادات لا تقتصر على المنصة بشأن اختيار إعداد شبكة توصيل المحتوى وضبطه وتحسينه.
نظرة عامة
تتكون شبكة توصيل المحتوى من شبكة من الخوادم تم تحسينها لتقديم المحتوى بسرعة للمستخدمين. على الرغم من أن شبكات توصيل المحتوى (CDN) هي الأكثر شهرة بوضوح بتقديم المحتوى المخزَّن مؤقتًا، يمكن لشبكات توصيل المحتوى (CDN) أيضًا تحسين عرض المحتوى غير القابل للتخزين المؤقت. بشكل عام، كلما زادت نسبة المحتوى الذي تعرضه شبكة توصيل المحتوى (CDN) على موقعك، كان ذلك أفضل.
تستند فوائد أداء شبكات توصيل المحتوى (CDN) بشكل عام إلى عدد من المبادئ، منها: تقع خوادم شبكة توصيل المحتوى (CDN) بالقرب من المستخدمين أكثر من خوادم المصدر، وبالتالي يكون وقت استجابة الإرسال والاستقبال (RTT) أقصر. وتتيح تحسينات الشبكات لشبكات توصيل المحتوى (CDN) تقديم المحتوى بسرعة أكبر مما لو تم تحميل المحتوى "مباشرةً" من خادم المصدر. وأخيرًا، توفّر ذاكرات التخزين المؤقت لشبكة توصيل المحتوى (CDN) الحاجة إلى الانتقال إلى الخادم من خلال ذاكرة التخزين المؤقت.
تسليم الموارد
على الرغم من أن ذلك قد يبدو غير بديهي، فإن استخدام شبكة توصيل المحتوى (CDN) لتسليم الموارد (حتى الموارد غير القابلة للتخزين المؤقت) عادةً ما يكون أسرع من تحميل المستخدم للمورد "مباشرة" من خوادمك.
عند استخدام شبكة توصيل للمحتوى (CDN) لتسليم الموارد من المصدر، يتم إنشاء اتصال جديد بين العميل وخادم CDN قريب. الجزء المتبقي من الرحلة (أي نقل البيانات بين خادم شبكة توصيل المحتوى (CDN) والمصدر) يحدث عبر شبكة شبكة توصيل المحتوى (CDN) التي تتضمّن غالبًا اتصالات حالية ومستمرة مع المصدر. فوائد ذلك ذات شقين: إنهاء الاتصال الجديد أقرب ما يكون إلى المستخدم قدر الإمكان يؤدي إلى التخلص من تكاليف إعداد الاتصال غير الضرورية (إنشاء اتصال جديد أمر مكلف ويتطلب جولات ذهاب وعودة متعددة)؛ يتيح استخدام اتصال تم إعداده مسبقًا نقل البيانات فورًا بأقصى سرعة ممكنة لمعالجة البيانات.
وتحسّن بعض شبكات توصيل المحتوى (CDN) هذا الأمر بصورة أكبر من خلال توجيه حركة البيانات إلى المصدر من خلال خوادم شبكة توصيل محتوى (CDN) متعدّدة تنتشر على الإنترنت. تحدث الاتصالات بين خوادم شبكة توصيل المحتوى (CDN) عبر مسارات موثوقة ومحسَّنة للغاية، بدلاً من المسارات التي يحدّدها بروتوكول بوابة الحدود (BGP). على الرغم من أن بروتوكول BGP هو بروتوكول التوجيه الفعلي على الإنترنت، فإن قرارات التوجيه الخاصة به ليست دائمًا موجهة نحو الأداء. لذلك، فمن المحتمل أن تكون المسارات المحددة من خلال BGP أقل أداءً من المسارات التي تم ضبطها بدقة بين خوادم شبكة توصيل المحتوى (CDN).
التخزين المؤقت
يؤدي التخزين المؤقت للموارد على خوادم شبكة توصيل المحتوى (CDN) إلى إلغاء الحاجة إلى انتقال الطلب وصولاً إلى المصدر من أجل تقديمه. ونتيجةً لذلك، يتم تسليم المورد بسرعة أكبر، ويؤدي ذلك أيضًا إلى تقليل الحمل على خادم المصدر.
إضافة موارد إلى ذاكرة التخزين المؤقت
تتمثل الطريقة الأكثر استخدامًا لتعبئة ذاكرات التخزين المؤقت لشبكة توصيل المحتوى (CDN) في الحصول على موارد "سحب" شبكة توصيل المحتوى (CDN) حسب الحاجة - ويُعرف ذلك باسم "سحب المصدر". في المرة الأولى التي يتم فيها طلب مورد معيّن من ذاكرة التخزين المؤقت، ستطلبه شبكة توصيل المحتوى (CDN) من خادم المصدر وتخزين الاستجابة مؤقتًا. وبهذه الطريقة، يتم تجميع محتويات ذاكرة التخزين المؤقت بمرور الوقت عند طلب موارد إضافية غير مخزّنة مؤقتًا.
إزالة الموارد من ذاكرة التخزين المؤقت
تستخدم شبكات توصيل المحتوى (CDN) إخلاء ذاكرة التخزين المؤقت لإزالة الموارد غير المفيدة من ذاكرة التخزين المؤقت بشكل دوري. بالإضافة إلى ذلك، يمكن لمالكي المواقع الإلكترونية استخدام ميزة التطهير لإزالة الموارد بشكل صريح.
إخلاء ذاكرة التخزين المؤقت
ذاكرة التخزين المؤقت ذات سعة تخزين محدودة. عندما تقترب ذاكرة التخزين المؤقت من سعتها، فإنها توفر مساحة لموارد جديدة عن طريق إزالة الموارد التي لم يتم الوصول إليها مؤخرًا أو الموارد التي تستهلك مساحة كبيرة. تُعرف هذه العملية بإخلاء ذاكرة التخزين المؤقت. لا يعني إخراج المورد من ذاكرة تخزين مؤقت واحدة بالضرورة أنه تم إخراجه من جميع ذاكرات التخزين المؤقت في شبكة شبكة توصيل المحتوى (CDN).
الإزالة
التطهير (المعروف أيضًا باسم "إبطال ذاكرة التخزين المؤقت") هو آلية لإزالة مورد من ذاكرات التخزين المؤقت لشبكة توصيل المحتوى (CDN) بدون الحاجة إلى الانتظار حتى انتهاء صلاحيته أو التخلص منه. ويتم تنفيذه عادةً عبر واجهة برمجة التطبيقات. تُعدّ إزالة المحتوى نهائيًا أمرًا بالغ الأهمية في الحالات التي يجب فيها سحب المحتوى (على سبيل المثال، تصحيح الأخطاء الإملائية أو أخطاء التسعير أو المقالات الإخبارية غير الصحيحة). علاوة على ذلك، يمكن أن تؤدي هذه الميزة دورًا مهمًا في استراتيجية التخزين المؤقت الخاصة بالموقع الإلكتروني.
إذا كانت شبكة توصيل المحتوى (CDN) توفّر إمكانية الإزالة الفورية تقريبًا، يمكن استخدام الإزالة النهائية كآلية لإدارة التخزين المؤقت للمحتوى الديناميكي: تخزين المحتوى الديناميكي مؤقّتًا باستخدام مدة بقاء طويلة (TTL)، ثم إزالة المورد نهائيًا عندما يتم تعديله. بهذه الطريقة، يمكن زيادة مدة التخزين المؤقت لمورد ديناميكي إلى أقصى حد، على الرغم من عدم معرفة موعد تغيير المورد مسبقًا. يُشار إلى هذه التقنية أحيانًا باسم "التخزين المؤقت للصفحات".
وعند استخدام عمليات التطهير على نطاق واسع، يتم عادةً استخدامها بالتزامن مع مفهوم يُعرف باسم "علامات ذاكرة التخزين المؤقت" أو "مفاتيح ذاكرة التخزين المؤقت البديلة". وتتيح هذه الآلية لمالكي المواقع الإلكترونية ربط معرّف إضافي واحد أو أكثر (يُشار إليه أحيانًا باسم "العلامات") بمورد مخزَّن مؤقتًا. ويمكن بعد ذلك استخدام هذه العلامات لتنفيذ تطهير شديد الدقة. على سبيل المثال، يمكنك إضافة علامة "تذييل" إلى جميع الموارد (مثل
/about
و/blog
) التي تحتوي على تذييل موقعك الإلكتروني. عند تعديل التذييل، يمكنك توجيه شبكة توصيل المحتوى (CDN) إلى إزالة جميع الموارد المرتبطة بعلامة "التذييل" نهائيًا.
الموارد القابلة للتخزين المؤقت
تعتمد طريقة تخزين المورد في ذاكرة التخزين المؤقت وكيفية إجراء ذلك على ما إذا كان عامًا أو خاصًا أو ثابتًا أو ديناميكيًا.
المراجع الخاصة والعامة
المراجع الخاصة
تحتوي الموارد الخاصة على بيانات مخصصة لمستخدم واحد، وبالتالي يجب عدم تخزينها مؤقتًا بواسطة شبكة توصيل المحتوى (CDN). يُشار إلى الموارد الخاصة من خلال عنوان
Cache-Control: private
.المراجع العامة
لا تحتوي الموارد العامة على معلومات خاصة بالمستخدم، وبالتالي يمكن تخزينها مؤقتًا بواسطة شبكة توصيل المحتوى (CDN). يمكن اعتبار المورد قابلاً للتخزين المؤقت بواسطة شبكة توصيل المحتوى (CDN) إذا لم يكن يتضمّن عنوان
Cache-Control: no-store
أوCache-Control: private
. تعتمد المدة التي يمكن خلالها تخزين مورد عام في ذاكرة التخزين المؤقت على عدد مرات تغيير مادة العرض.
المحتوى الديناميكي والثابت
المحتوى الديناميكي
المحتوى الديناميكي هو المحتوى الذي يتغيّر بشكل متكرّر. استجابة واجهة برمجة التطبيقات والصفحة الرئيسية للمتجر هما مثالان على هذا النوع من المحتوى. مع ذلك، فإنّ حقيقة تغيير هذا المحتوى باستمرار لا يمنع بالضرورة تخزينه مؤقتًا. خلال فترات زيادة عدد الزيارات، يمكن أن يؤدي التخزين المؤقت لهذه الردود لفترات زمنية قصيرة جدًا (مثلاً 5 ثوانٍ) إلى تقليل الحمل بشكل كبير على خادم المصدر، ولكن سيكون له تأثير ضئيل في مدى حداثة البيانات.
المحتوى الثابت
لا يتغير المحتوى الثابت بشكل متكرر، إن وجد. عادة ما تكون الصور والفيديوهات والمكتبات ذات النُسخ المتكررة أمثلة على هذا النوع من المحتوى. نظرًا لأن المحتوى الثابت لا يتغير، يجب تخزينه مؤقتًا لمدة طويلة لمدة البقاء (TTL)، على سبيل المثال، 6 أشهر أو سنة واحدة.
اختيار شبكة توصيل للمحتوى
عادةً ما يكون الأداء من أهم نقاط الاهتمام عند اختيار شبكة توصيل المحتوى (CDN). ومع ذلك، من المهم أخذ الميزات الأخرى التي تقدّمها شبكة توصيل المحتوى (CDN) (على سبيل المثال، ميزات الأمان والإحصاءات)، بالإضافة إلى أسعار شبكة توصيل المحتوى والدعم والإعداد (CDN) في الاعتبار عند اختيار شبكة توصيل المحتوى (CDN).
عروض أداء
على مستوى عالٍ، يمكن النظر في استراتيجية أداء شبكة توصيل المحتوى (CDN) من حيث المفاضلة بين تقليل وقت الاستجابة وزيادة نسبة نتائج ذاكرة التخزين المؤقت إلى أقصى حد. يمكن لشبكات توصيل المحتوى (CDN) التي تتضمّن العديد من نقاط التواجد (PoP) تقديم وقت استجابة أقل ولكن قد تنخفض نسب نتائج ذاكرة التخزين المؤقت نتيجة تقسيم عدد الزيارات على المزيد من ذاكرات التخزين المؤقت. وعلى النقيض، قد تكون شبكات توصيل المحتوى (CDN) التي تتضمّن عددًا أقل من شركات عرض الإعلانات (POP) موجودة جغرافيًا في مكان أبعد من المستخدمين، ولكن يمكنها تحقيق نسب نتائج ذاكرة التخزين المؤقت أعلى.
نتيجةً لهذه المفاضلة، تستخدم بعض شبكات توصيل المحتوى (CDN) منهجًا متعدّد المستويات للتخزين المؤقت: يتم استكمال عمليات نقل البيانات (POP) القريبة من المستخدمين (المعروفة أيضًا باسم "ذاكرات التخزين المؤقت الهامشية") بنقاط اتصال مركزية (POP) مركزية ذات نسب نتائج أعلى في ذاكرة التخزين المؤقت. عندما يتعذّر على ذاكرة التخزين المؤقت على الحافة من العثور على مورد، ستبحث عن نقطة البيع المركزية للمورد. يستخدم هذا الأسلوب وقت استجابة أكبر قليلاً من أجل زيادة احتمال عرض المورد من ذاكرة تخزين مؤقت لشبكة توصيل المحتوى (CDN) - وليس بالضرورة على ذاكرة تخزين مؤقت طرفية.
هناك إطار تبادلي بين تقليل وقت الاستجابة وزيادة نسبة نتائج ذاكرة التخزين المؤقت إلى أقصى حد. ليس هناك منهج أفضل على نحو عام، ولكن استنادًا إلى طبيعة الموقع وقاعدة المستخدمين إليه، قد تجد أن أحد هذه الأساليب يحقق أداءً أفضل بكثير من الآخر.
تجدر الإشارة أيضًا إلى أنّ أداء شبكة توصيل المحتوى (CDN) قد يختلف بشكل كبير حسب الموقع الجغرافي والوقت من اليوم وحتى الأحداث الجارية. على الرغم من أنه من الجيد دائمًا إجراء البحث الخاص بك حول أداء شبكة توصيل المحتوى (CDN)، قد يكون من الصعب توقّع الأداء الدقيق الذي ستحصل عليه من شبكة توصيل المحتوى (CDN).
التأثير على سرعة عرض أكبر محتوى مرئي (LCP)
كما هو موضح من قبل في هذه المقالة، يتمثّل الغرض الأساسي من شبكة توصيل المحتوى (CDN) في تقليل وقت الاستجابة من خلال توزيع الموارد على الخوادم الأقرب جغرافيًا إلى المستخدمين. ولهذا السبب، تكمن الفائدة الأساسية لشبكة عرض المحتوى (CDN) في أنّها تحسّن أداء التحميل. وعلى وجه التحديد، يمكن تحسين الوقت المستغرق حتى أول بايت (TTFB) في المورد بشكل كبير عند إضافة شبكة توصيل للمحتوى في بنية موقعك الإلكتروني من جهة الخادم.
على الرغم من أنّ مقياس TTFB ليس مقياسًا للأداء يركّز على المستخدم، فهو مقياس مهم لتشخيص المشاكل المتعلّقة بسرعة عرض أكبر محتوى مرئي (LCP)، وهو مقياس يركّز على المستخدم.
تتميّز شبكات توصيل المحتوى (CDN) بفعاليتها بشكل خاص في تحسين سرعة عرض أكبر جزء من المحتوى على الصفحة (LCP) لأنّها يمكنها تحسين عملية إرسال المستندات (عن طريق تقليل عدد مرّات تقديم المستندات في إعدادات الربط وتخزين المستند في ذاكرة التخزين المؤقت) وتحسين تقديم أي موارد ثابتة لازمة لعرض عنصر سرعة عرض أكبر جزء من المحتوى على الصفحة (LCP).
ميزات إضافية
تقدم شبكات توصيل المحتوى (CDN) عادةً مجموعة متنوعة من الميزات بالإضافة إلى مزايا شبكة توصيل المحتوى (CDN) الأساسية التي تقدمها. تتضمن الميزات المعروضة بشكل شائع: موازنة التحميل، وتحسين الصور، وبث الفيديو، والحوسبة الهامشية، ومنتجات الأمان.
كيفية ضبط شبكة توصيل للمحتوى (CDN)
من الناحية المثالية، يجب استخدام شبكة توصيل المحتوى (CDN) لعرض موقعك الإلكتروني بالكامل. وعلى مستوى عالٍ، تتألف عملية الإعداد من الاشتراك مع موفر شبكة توصيل المحتوى (CDN)، ثم تعديل سجلّ CNAME لنظام أسماء النطاقات للإشارة إلى موفر شبكة توصيل المحتوى (CDN). على سبيل المثال، قد يشير سجلّ CNAME للنطاق www.example.com
إلى example.my-cdn.com
. نتيجةً لهذا التغيير في نظام أسماء النطاقات، سيتم توجيه حركة الزيارات إلى موقعك الإلكتروني من خلال شبكة توصيل المحتوى (CDN).
وإذا لم يكن استخدام شبكة توصيل المحتوى (CDN) لعرض جميع الموارد خيارًا، يمكنك ضبط شبكة توصيل المحتوى (CDN) لخدمة مجموعة فرعية من الموارد فقط، مثل الموارد الثابتة فقط. يمكنك القيام بذلك عن طريق إنشاء سجل CNAME منفصل سيتم استخدامه فقط للموارد التي يجب أن يتم تقديمها بواسطة شبكة توصيل المحتوى (CDN). على سبيل المثال، يمكنك إنشاء سِجل CNAME static.example.com
يشير إلى example.my-cdn.com
. سيكون عليك أيضًا إعادة كتابة عناوين URL للموارد التي تعرضها شبكة توصيل المحتوى (CDN) للإشارة إلى النطاق الفرعي static.example.com
الذي أنشأته.
وعلى الرغم من أنّه سيتم إعداد شبكة توصيل المحتوى في هذه المرحلة، من المحتمل أن تكون هناك أوجه قصور في الإعدادات. سيشرح القسمان التاليان من هذه المقالة كيفية الاستفادة إلى أقصى حد من شبكة توصيل المحتوى (CDN) من خلال زيادة نسبة نتائج ذاكرة التخزين المؤقت وتفعيل ميزات الأداء.
تحسين نسبة نتائج ذاكرة التخزين المؤقت
سيؤدي الإعداد الفعال لشبكة توصيل المحتوى إلى تقديم أكبر عدد ممكن من الموارد من ذاكرة التخزين المؤقت. ويشيع قياس ذلك من خلال نسبة نتائج ذاكرة التخزين المؤقت (CHR). تُعرَّف نسبة نتائج ذاكرة التخزين المؤقت بأنها عدد نتائج ذاكرة التخزين المؤقت مقسومًا على عدد إجمالي الطلبات خلال فترة زمنية معينة.
سيكون لذاكرة التخزين المؤقت التي تم إعدادها حديثًا CHR بقيمة 0، ولكن يزداد هذا كلما تمت تعبئة ذاكرة التخزين المؤقت بالموارد. يُعد CHR بنسبة 90% هدفًا جيدًا لمعظم المواقع. يجب أن يزودك موفر شبكة توصيل المحتوى (CDN) بتحليلات وتقارير بشأن CHR.
عند تحسين CHR، يجب التحقق أولاً من تخزين جميع الموارد القابلة للتخزين المؤقت وتخزينها مؤقتًا للمدة الزمنية الصحيحة. هذا تقييم بسيط يجب أن تُجريه جميع المواقع الإلكترونية.
المستوى التالي من تحسين CHR، بشكل عام، هو ضبط إعدادات شبكة توصيل المحتوى (CDN) للتأكد من عدم التخزين المؤقت لاستجابات الخادم المكافئة منطقيًا بشكل منفصل. ويحدث هذا الأمر لعدم الكفاءة بشكل شائع بسبب تأثير عوامل مثل مَعلمات طلب البحث وملفات تعريف الارتباط وعناوين الطلبات في التخزين المؤقت.
التدقيق الأولي
ستوفر معظم شبكات توصيل المحتوى (CDN) إحصاءات ذاكرة التخزين المؤقت. بالإضافة إلى ذلك، يمكن استخدام أدوات مثل WebPageTest وLighthouse للتحقق بسرعة من أن جميع الموارد الثابتة للصفحة يتم تخزينها مؤقتًا لمدة زمنية صحيحة. يتم تحقيق ذلك عن طريق التحقق من رؤوس ذاكرة التخزين المؤقت HTTP لكل مورد. سيؤدي تخزين المورد مؤقتًا باستخدام الحد الأقصى المناسب لمدة البقاء (TTL) إلى تجنُّب عمليات استرجاع المصدر غير الضرورية في المستقبل، وبالتالي زيادة معدّل الإحالات الناجحة CHR.
وكحد أدنى، يجب تعيين أحد هذه العناوين حتى يتم تخزين المورد مؤقتًا بواسطة شبكة توصيل للمحتوى (CDN):
Cache-Control: max-age=
Cache-Control: s-maxage=
Expires
بالإضافة إلى ذلك، على الرغم من أنّ ذلك لا يؤثّر في إمكانية تخزين المورد مؤقتًا في شبكة توصيل المحتوى (CDN) أو على طريقة تخزينه، يُفضَّل ضبط التوجيه Cache-Control: immutable
.Cache-Control: immutable
ويشير إلى أنّه "لن يتم تحديث المورد خلال فترة حداثة تاريخه". ونتيجة لذلك، لن يعيد المتصفح التحقق من صحة المورد عند عرضه من ذاكرة التخزين المؤقت للمتصفح، ما يؤدي إلى إزالة طلب الخادم غير الضروري. للأسف، هذا التوجيه متوافق فقط مع Firefox وSafari، ولا يدعمه المتصفّحات المستندة إلى Chromium. يتتبّع هذا المشكلة مدى دعم Chromium لنظام التشغيل Cache-Control: immutable
. قد يساعد تمييز هذه المشكلة بنجمة في تشجيع الدعم على استخدامها.
للحصول على شرح أكثر تفصيلاً عن التخزين المؤقت لبروتوكول HTTP، يمكنك الرجوع إلى مقالة منع طلبات الشبكة غير الضرورية باستخدام ذاكرة التخزين المؤقت لبروتوكول HTTP.
ضبط دقيق لتحسين الأداء
هناك شرح مبسّط قليلاً لكيفية عمل ذاكرات التخزين المؤقت لشبكة عرض المحتوى (CDN) هو أنّه يتم استخدام عنوان URL للمورد كمفتاح للتخزين المؤقت واسترداد المورد من ذاكرة التخزين المؤقت. من الناحية العملية، لا يزال هذا صحيحًا إلى حد كبير، ولكنه معقد بعض الشيء بسبب تأثير عناصر مثل عناوين الطلبات ومَعلمات طلب البحث. ونتيجةً لذلك، تُعدّ إعادة كتابة عناوين URL للطلبات أسلوبًا مهمًا لزيادة CHR إلى أقصى حد وضمان عرض المحتوى الصحيح للمستخدمين. يحقق مثيل شبكة توصيل المحتوى (CDN) الذي تم إعداده بشكل صحيح التوازن الصحيح بين التخزين المؤقت الدقيق للغاية (ما يضر بـ CHR) والتخزين المؤقت غير الدقيق (ما يؤدي إلى عرض ردود غير صحيحة للمستخدمين).
مَعلمات طلب البحث
تضع شبكات توصيل المحتوى (CDN) تلقائيًا مَعلمات طلبات البحث في الاعتبار عند تخزين أحد الموارد في ذاكرة التخزين المؤقت. ومع ذلك، يمكن أن يكون للتعديلات الصغيرة في التعامل مع مَعلمات طلب البحث تأثير كبير في معدّل الإحالات الناجحة CHR. مثال:
مَعلمات طلب البحث غير الضرورية
بشكل تلقائي، يتم تخزين
example.com/blog
وexample.com/blog?referral_id=2zjk
مؤقتًا في شبكة توصيل المحتوى (CDN) بشكل منفصل على الرغم من أنّهما على الأرجح المورد الأساسي نفسهما. ويتم حلّ هذه المشكلة عن طريق ضبط إعدادات شبكة توصيل المحتوى (CDN) لتجاهل مَعلمة طلب البحثreferral\_id
.ترتيب مَعلمات طلب البحث
سيخزن شبكة توصيل المحتوى (CDN) مؤقتًا
example.com/blog?id=123&query=dogs
بشكل منفصل عنexample.com/blog?query=dogs&id=123
. بالنسبة إلى معظم المواقع الإلكترونية، لا يهم ترتيب مَعلمات طلب البحث، لذا فإن ضبط شبكة توصيل المحتوى (CDN) لترتيب مَعلمات طلب البحث (وبالتالي تسوية عنوان URL المستخدَم لتخزين استجابة الخادم مؤقتًا) سيؤدي إلى زيادة CHR.
تنويع
يُعلِم عنوان الاستجابة Vary ذاكرات التخزين المؤقت بأن استجابة الخادم المقابلة لعنوان URL معيّن قد تختلف بناءً على العناوين المحدَّدة في الطلب (على سبيل المثال، عنوانا الطلب Accept-Language أو Accept-Encoding). ونتيجةً لذلك، يطلب من شبكة توصيل المحتوى (CDN) تخزين هذه الاستجابات في ذاكرة التخزين المؤقت بشكل منفصل. لا يتم دعم رأس Vary على نطاق واسع بواسطة شبكات توصيل المحتوى (CDN) وقد يؤدي إلى عدم عرض مورد قابل للتخزين المؤقت بطريقة أخرى من ذاكرة التخزين المؤقت.
على الرغم من أن رأس Vary يمكن أن يكون أداة مفيدة، إلا أن الاستخدام غير المناسب يؤثر سلبًا في CHR. بالإضافة إلى ذلك، إذا كنت تستخدِم Vary
، ستساعد تسوية عناوين الطلبات في تحسين CHR. على سبيل المثال، في حال عدم تسوية عنوانَي الطلبات Accept-Language: en-US
وAccept-Language: en-US,en;q=0.9
، قد ينتج عنهما إدخالان منفصلان لذاكرة التخزين المؤقت، على الرغم من أنّ المحتوى سيكون متطابقًا على الأرجح.
بسكويت
يتم ضبط ملفات تعريف الارتباط على الطلبات من خلال عنوان Cookie
، ويتم ضبطها على الردود من خلال عنوان Set-Cookie
. يجب تجنُّب الاستخدام غير الضروري لرأس Set-Cookie
، لأنّ ذاكرات التخزين المؤقت لن تخزِّن عادةً استجابات الخادم التي تحتوي على هذا العنوان.
ميزات الأداء
يتناول هذا القسم ميزات الأداء التي تقدّمها عادةً شبكات توصيل المحتوى (CDN) كجزء من عرض المنتجات الأساسي لديها. تنسى العديد من المواقع الإلكترونية تفعيل هذه الميزات، ما يؤدي إلى خسارة مكاسب أداء سهلة.
الضغط
يجب أن تكون جميع الردود المستندة إلى نص مضغطة إما باستخدام gzip أو Brotli. إذا كان لديك الخيار، اختر Brotli بدلاً من gzip. Brotli هي خوارزمية ضغط أحدث، ويمكنها تحقيق نسب ضغط أعلى مقارنةً بـ gzip.
هناك نوعان من دعم شبكة توصيل المحتوى (CDN) لضغط Brotli، وهما: "Brotli من origin" و "ضغط Brotli التلقائي".
مسلسل Brotli من المصدر
تظهر Brotli من المصدر عندما تعرض شبكة توصيل المحتوى (CDN) موارد تم ضغطها بواسطة Brotli حسب المصدر. على الرغم من أنّ هذه الميزة قد تبدو كميزة يجب أن تكون جميع شبكات توصيل المحتوى (CDN) قادرة على دعمها بشكل جديد، يجب أن تكون شبكة توصيل المحتوى (CDN) قادرة على تخزين إصدارات متعددة في ذاكرة التخزين المؤقت (بعبارة أخرى، إصدارات مضغوطة من خلال gzip وإصدارات مضغوطة بنمط Brotli) من المورد المقابل لعنوان URL معيّن.
ضغط Brotli التلقائي
يحدث ضغط Brotli التلقائي عندما يتم ضغط الموارد Brotli بواسطة شبكة توصيل المحتوى (CDN). يمكن لشبكات توصيل المحتوى (CDN) ضغط كل من الموارد القابلة للتخزين المؤقت وغير القابلة للتخزين المؤقت.
يتم تقديم مورد في المرة الأولى التي يتم فيها طلبه باستخدام ضغط "جيد بدرجة كافية"، على سبيل المثال، Brotli-5. وينطبق هذا النوع من الضغط على كل من الموارد القابلة للتخزين المؤقت وغير القابلة للتخزين المؤقت.
في الوقت نفسه، إذا كان المورد قابلاً للتخزين المؤقت، ستستخدم شبكة توصيل المحتوى (CDN) المعالجة بلا اتصال بالإنترنت لضغط المورد بمستوى ضغط أكثر قوة ولكن أبطأ بكثير، على سبيل المثال Brotli-11. وبعد اكتمال عملية الضغط هذه، يتم تخزين النسخة المضغوطة مؤقتًا واستخدامها للطلبات اللاحقة.
أفضل ممارسات الضغط
يجب على المواقع الإلكترونية التي تريد تحقيق أفضل أداء تطبيق ضغط Brotli في كلٍّ من خادم المصدر وشبكة توصيل المحتوى (CDN). يؤدي ضغط Brotli في المصدر إلى تقليل حجم نقل الموارد التي لا يمكن عرضها من ذاكرة التخزين المؤقت. لمنع حدوث تأخير في طلبات العرض، يجب أن يضغط المصدر الموارد الديناميكية باستخدام مستوى ضغط معتدل إلى حد ما، على سبيل المثال، Brotli-4، ويمكن ضغط الموارد الثابتة باستخدام Brotli-11. إذا كان المصدر لا يدعم Brotli، يمكن استخدام gzip-6 لضغط الموارد الديناميكية، ويمكن استخدام gzip-9 لضغط الموارد الثابتة.
الإصدار 1.3 من بروتوكول أمان طبقة النقل (TLS)
TLS 1.3 هو أحدث إصدار من بروتوكول أمان طبقة النقل (TLS)، وهو بروتوكول التشفير الذي يستخدمه HTTPS. يوفّر الإصدار 1.3 من بروتوكول أمان طبقة النقل (TLS) خصوصية وأداءً أفضل مقارنةً ببروتوكول أمان طبقة النقل (TLS) الإصدار 1.2.
يعمل الإصدار 1.3 من بروتوكول أمان طبقة النقل (TLS) على اختصار تأكيد اتصال بروتوكول أمان طبقة النقل (TLS) من جولتين ذهاب وعودة إلى واحد. بالنسبة إلى الاتصالات التي تستخدم HTTP/1 أو HTTP/2، يؤدي اختصار تأكيد الاتصال عبر بروتوكول أمان طبقة النقل (TLS) إلى جولة ذهاب وعودة إلى تقليل وقت إعداد الاتصال بشكل فعّال بنسبة %33.
HTTP/2 وHTTP/3
يوفّر كل من بروتوكول HTTP/2 وHTTP/3 مزايا متعلقة بالأداء على HTTP/1. يقدّم بروتوكول HTTP/3 فوائد أداء محتملة أكبر من المجموعتين. لم يتم توحيد HTTP/3 بالكامل حتى الآن، ولكن ستتم دعمه على نطاق واسع عند حدوث ذلك.
HTTP/2
إذا لم يسبق لك تفعيل HTTP/2 تلقائيًا في شبكة توصيل المحتوى (CDN)، نقترح عليك تفعيلها. يوفّر HTTP/2 العديد من مزايا الأداء مقارنةً بـ HTTP/1 ومتوافق مع جميع المتصفحات الرئيسية. تشمل ميزات أداء بروتوكول HTTP/2 ما يلي: تعدد الإرسال وتحديد أولوية البث وضغط العنوان.
مضاعفة الطلبات
يمكن القول إن تعدد الإرسال هو أهم ميزة في HTTP/2. يعمل تعدد الإرسال على تمكين اتصال TCP واحد من أجل عرض أزواج طلب واستجابة متعددة في الوقت نفسه. يزيل هذا عبء عمليات إعداد الاتصال غير الضرورية، ونظرًا إلى محدودية عدد الاتصالات التي يمكن أن يفتحها المتصفِّح في وقت معيَّن، يعني ذلك أيضًا أنّ المتصفّح قادر الآن على طلب المزيد من موارد الصفحة بالتوازي. يؤدي تعدد الإرسال نظريًا إلى إزالة الحاجة إلى تحسينات HTTP/1 مثل التجميع وأوراق الرموز المتحركة، ولكن من الناحية العملية، ستظل هذه الأساليب ذات صلة نظرًا لضغط الملفات الأكبر حجمًا بشكل أفضل.
تحديد الأولويات المتعلّقة بالبث
يعمل تعدد الإرسال على تفعيل مجموعات بث متزامنة متعددة، في حين يوفّر تحديد الأولوية للبث واجهة لإبلاغ الأولوية النسبية لكلّ من عمليات البث هذه. يساعد ذلك الخادم في إرسال الموارد الأكثر أهمية أولاً، حتى إذا لم يتم طلبها أولاً.
يتم التعبير عن أولويات مجموعة البث من خلال شجرة التبعية وهي مجرد بيان للتفضيل، أي أنّ الخادم غير مُلزَم بتلبية (أو حتى وضع) في الاعتبار الأولويات التي يوفّرها المتصفّح. تصبح أولوية البث أكثر فعالية عند عرض جزء أكبر من محتوى الموقع الإلكتروني من خلال شبكة توصيل المحتوى (CDN).
تختلف عمليات تنفيذ شبكة توصيل المحتوى (CDN) لتحديد أولوية موارد HTTP/2 بشكل كبير. لمعرفة ما إذا كانت شبكة توصيل المحتوى (CDN) متوافقة مع تحديد أولوية موارد HTTP/2 بشكل كامل وصحيح، اطّلِع على المقالة هل HTTP/2 سريع الآن؟.
على الرغم من أنّ تبديل مثيل شبكة توصيل المحتوى إلى HTTP/2 يعتمد إلى حدّ كبير على قلب المبدل، من المهم اختبار هذا التغيير بدقة قبل تفعيله في الإنتاج. يستخدم كل من HTTP/1 وHTTP/2 نفس الاصطلاحات لعناوين الطلبات والاستجابة - ولكن HTTP/2 أقل بكثير في حالة عدم الالتزام بهذه الاصطلاحات. نتيجةً لذلك، قد تبدأ الممارسات غير الخاصة بمواصفات معيّنة، مثل تضمين أحرف غير ASCII أو الأحرف الكبيرة في العناوين، في حدوث أخطاء عند تفعيل HTTP/2. وإذا حدث ذلك، ستفشل محاولات المتصفح لتنزيل المورد. ستظهر محاولة التنزيل غير الناجحة في علامة التبويب "الشبكة" ضمن "أدوات مطوري البرامج". بالإضافة إلى ذلك، سيتم عرض رسالة الخطأ "ERR_HTTP2_PROTOCOL_ERROR" في وحدة التحكّم.
بروتوكول HTTP/3
HTTP/3 هو عكس HTTP/2. منذ أيلول (سبتمبر) 2020، أصبحت جميع المتصفحات الرئيسية تستخدم توافقًا تجريبيًا لبروتوكول HTTP/3 مع بعض شبكات توصيل المحتوى (CDN). الأداء هو الفائدة الأساسية لـ HTTP/3 على HTTP/2. على وجه التحديد، يزيل HTTP/3 حظر العنوان المباشر على مستوى الاتصال ويقلل من وقت إعداد الاتصال.
إزالة الحظر المباشر
قدّم HTTP/2 ميزة تعدد الإرسال، وهي ميزة تسمح باستخدام اتصال فردي لنقل مجموعات متعددة من البيانات في وقت واحد. ومع ذلك، باستخدام HTTP/2، تحظر حزمة واحدة يتم إسقاطها جميع عمليات البث في الاتصال (ظاهرة تُعرف باسم الحظر المباشر). عند استخدام HTTP/3، تحظر الحزمة المضمّنة عملية بث واحدة فقط. ينتج هذا التحسين إلى حدّ كبير عن استخدام بروتوكول HTTP/3 لبروتوكول UDP (يستخدم HTTP/3 بروتوكول UDP عبر QUIC) بدلاً من بروتوكول TCP. وهذا يجعل HTTP/3 مفيدًا بشكل خاص لنقل البيانات عبر الشبكات المزدحمة أو المفقودة.
تقليل وقت إعداد الاتصال
يستخدم بروتوكول HTTP/3 TLS 1.3، وبالتالي يشارك مزايا الأداء الخاصة به: لا يتطلب إنشاء اتصال جديد إلا إرسالاً واحدًا ذهابًا وإيابًا، ولا يتطلب استئناف اتصال حالي أي عمليات ذهاب وعودة.
سيكون لبروتوكول HTTP/3 التأثير الأكبر في المستخدمين على الاتصالات الضعيفة بالشبكة: ليس فقط لأن بروتوكول HTTP/3 يتعامل مع فقدان الحزمة بشكل أفضل من الإصدارات السابقة، ولكن أيضًا لأن مقدار التوفير المطلق للوقت الناتج عن إعداد الاتصال بالمراسلة النصية في الوقت الفعلي (0-RTT) أو الاتصال بالمراسلة النصية في الوقت الفعلي (1-RTT) سيكون أكبر على الشبكات ذات وقت الاستجابة المرتفع.
تحسين الصور
تركّز خدمات تحسين صور شبكة توصيل المحتوى (CDN) عادةً على تحسينات الصور التي يمكن تطبيقها تلقائيًا لتقليل حجم نقل الصور. على سبيل المثال: إزالة بيانات EXIF وتطبيق الضغط بدون فقدان البيانات وتحويل الصور إلى تنسيقات ملفات أحدث (مثل WebP) تشكّل الصور% 50 تقريبًا من وحدات بايت النقل في صفحة الويب المتوسطة، وبالتالي يمكن أن تؤدي تحسين الصور إلى تقليل حجم الصفحة بشكل كبير.
تصغير البيانات
ويؤدي تقليل البيانات إلى إزالة الأحرف غير الضرورية من JavaScript وCSS وHTML. يُفضَّل إجراء الإزالة في خادم المصدر بدلاً من شبكة توصيل المحتوى (CDN). يتوفّر لمالكي المواقع الإلكترونية سياق أكبر حول الرمز البرمجي الذي يجب تقليصه، وبالتالي يمكنهم في كثير من الأحيان استخدام أساليب التخلص من البيانات بشكل أكثر صرامة من تلك التي تستخدمها شبكات توصيل المحتوى (CDN). ومع ذلك، إذا لم يكن خيار تصغير الرمز في المصدر متاحًا، يكون تقليل المحتوى باستخدام شبكة توصيل المحتوى (CDN) بديلاً جيدًا.
الخلاصة
- استخدام شبكة توصيل المحتوى (CDN): توفّر شبكات توصيل المحتوى (CDN) الموارد بسرعة وتقلّل من الحمل على خادم المصدر، وهي مفيدة في التعامل مع الارتفاع المفاجئ في عدد الزيارات.
- تخزين المحتوى مؤقتًا بأكبر قدر ممكن من القوة: يمكن تخزين كل من المحتوى الثابت والديناميكي مؤقتًا، وإن كان ذلك لفترات مختلفة. احرص على إجراء تدقيق دوري لموقعك الإلكتروني للحرص على تخزين المحتوى في ذاكرة التخزين المؤقت على النحو الأمثل.
- تفعيل ميزات أداء شبكة توصيل المحتوى (CDN): تعمل ميزات مثل Brotli وTLS 1.3 وHTTP/2 وHTTP/3 على تحسين الأداء بشكلٍ أكبر.