تحسين أداء Drupal 9 بالوحدات النمطية وأفضل ممارسات الترميز والتكوين الصحيح للخادم

نشرت: 2020-08-11

يمكن أن يكون لديك أقوى خادم به ذاكرة في أكوام ولكن هل هذا كافٍ لضمان موقع ويب عالي الأداء؟ مع دروبال ، من السهل توسيع نطاق موقع الويب بما يتماشى مع نمو عملك. في الواقع ، هذا هو ما يميز دروبال. ومع ذلك ، قد يؤثر الارتفاع المفاجئ في صفحات الويب والوظائف والمحتوى في أدائها. دروبال 9 هنا الآن وهو جاهز لمواجهة هذا التحدي مثل المحترفين! يأتي مع خيرات دروبال 8 مطروحًا منها الكود القديم الذي يجعله أصغر حجمًا وأنظف وأكثر قوة. اكتشف المزيد عن تقنيات تحسين أداء دروبال 9 التي تعمل تمامًا.

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

دروبال -9-تحسين الأداء


هناك العديد من الأشياء التي تؤثر على أداء الموقع. ومنهم:

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

دروبال 9 وحدات أساسية ومخصصة لتعزيز الأداء

هناك العديد من الوحدات الأساسية والمساهمة المتاحة في دروبال 9 والتي يمكن أن تكون مفيدة في تحسين أداء موقع الويب الخاص بك. باتباع ممارسات ترميز معينة وتكوين الخادم المناسب ، يمكنك تحسين أداء الموقع بشكل كبير.

وحدات أساسية

• الأنابيب الكبيرة

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

• ذاكرة التخزين المؤقت الداخلية للصفحة الديناميكية

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


• ذاكرة التخزين المؤقت الداخلية للصفحة

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

مسار التكوين: admin / config / development / performance

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

Advagg وحدة
وحدة ذاكرة التخزين المؤقت الداخلية للصفحة

الوحدات المساهمة

  • تجميع CSS / JS المتقدم

    تأتي وحدة Advagg معبأة بالعديد من الوحدات الفرعية الأخرى ، مثل -
  • AdvAgg Cdn: يساعد في تحميل الأصول (CSS / JS) من شبكة CDN العامة
  • AdvAgg CSS / JS Validator: يتحقق من صحة ملف CSS و JS
  • AdvAgg External Minifier: تصغير Javascript و / أو CSS باستخدام أداة تصغير سطر الأوامر.
  • AdvAgg Minify CSS: يساعد في تصغير ملفات css باستخدام أداة تصغير الطرف الثالث
  • AdvAgg Minify JS: يساعد في تصغير ملفات js باستخدام الطرف الثالث mi
  • معدِّل AdvAgg: يسمح لأحد بتعديل مصفوفة CSS و JS. (قد يكون هناك مشكلة في التوافق)
  • AdvAgg Old Internet Explorer Compatibility Enhancer محسن التوافق مع إنترنت إكسبلورر

مسار التكوين: / admin / config / development / performance / advagg

تدعم هذه الوحدة أيضًا تقنيات ضغط الملفات مثل gzip و brotli . تساعد هذه الوحدة في تقليل عدد طلبات http ، وبالتالي تحسين أداء الموقع بشكل ملحوظ.

  • بلازي

توفر وحدة Drupal 9 Blazy تحميلًا كسولًا للصور لتوفير النطاق الترددي وتجنب معدلات الارتداد الأعلى. التحميل الكسول هو تقنية تقوم بتحميل الصور فقط عندما تكون في المنطقة المرئية للمستخدم. هذا الأسلوب متعدد الخدمات يوفر الوقت والبيانات.

مسار التكوين: / admin / config / media / blazy

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

وحدة Blazy

وحدة Blazy
  • CDN

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

مسار التكوين: / admin / config / services / cdn

وحدة CDN
إعدادات وحدة CDN

هنا يمكنك تمكين / تعطيل CDN ، وتوفير عنوان URL للتعيين وتحديد / إلغاء تحديد التخزين المؤقت للملفات إلى الأبد.

تحسين الأداء مع أفضل ممارسات الترميز

  • استخدام isset () عبر array_key_exist ()

تعد طريقة isset () أسرع بكثير من طريقة array_key_exist () . الفرق الرئيسي بين isset و array_key_exist هو أن array_key_exists سيخبرك بالتأكيد إذا كان هناك مفتاح موجود في مصفوفة. في حين أن isset سيعود فقط صحيحًا إذا كان المفتاح / المتغير موجودًا ولم يكن فارغًا. لمزيد من المعلومات حول هذا الاختيار هنا للمقارنة المعيارية.

  • استخدام الكيان Query ()

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

  • استخدام طريقة loadMultiple () بدلاً من التكرار الحلقي

إذا كان لديك 10 عُقد (معرفات عقدة) وكنت تقوم بالتكرار خلالها لتحميل كل عقدة ، فأنت تقوم بإجراء 10 استعلامات إلى قاعدة البيانات. أثناء استخدام loadMultiple () ، يتم تقليله إلى استعلام قاعدة بيانات واحد فقط.

  • التخزين المؤقت

باستخدام Cache API في Drupal 9 ، يمكنك تخزين العارض أو مصفوفة الاستجابة أو الكائن مؤقتًا. تتوفر ثلاث بيانات وصفية للتخزين المؤقت لإمكانية العرض في دروبال 9.

  1. علامات ذاكرة التخزين المؤقت

    تُستخدم علامات ذاكرة التخزين المؤقت لتخزين البيانات مؤقتًا عندما تعتمد على تكوينات أو كيانات دروبال. بناء الجملة لهذا هو cache-item: identifier على سبيل المثال العقدة: 5 ، المستخدم: 3.
  2. سياق ذاكرة التخزين المؤقت

    بناء الجملة:
    • فترات تفصل الوالدين عن الأبناء
    • يشير سياق ذاكرة التخزين المؤقت المسمى بصيغة الجمع إلى إمكانية تحديد معلمة ؛ للاستخدام: قم بإلحاق نقطتين
    مثال: user.roles، user.roles: anonymous، etc.
  3. الحد الأقصى لعمر ذاكرة التخزين المؤقت

يتم استخدام الحد الأقصى لذاكرة التخزين المؤقت للتخزين المؤقت للبيانات الحساسة للوقت.

  • عامل طابور / دفعة

لمعالجة كميات كبيرة من البيانات دون انتهاء مهلة php ، يمكن استخدام معالجة الدُفعات أو عامل قائمة الانتظار. يتم تشغيل العناصر الموجودة في عامل قائمة الانتظار فقط عند تشغيل cron وتشغيله لفترة قصيرة من الوقت. هناك نوعان من العاملين في قائمة الانتظار: موثوق به وغير موثوق به. يضمن عامل قائمة الانتظار الموثوق به تشغيل العنصر الموجود في قائمة الانتظار مرة واحدة على الأقل ، في حين أن قائمة الانتظار غير الموثوق بها قد تتخطى العناصر بسبب فشل الذاكرة أو مقاطعة أخرى. تعالج معالجة الدُفعات العناصر حتى تنتهي جميع العناصر في الدُفعة بشرط بحيث لا يحدث أي خطأ أثناء المعالجة دون انتظار تشغيل cron.

تحسين الأداء مع تكوين خادم أفضل

  • استخدام Nginx بدلاً من Apache

Nginx و Apache ، كلاهما يستخدمان على نطاق واسع في خوادم الويب. يتفوق Nginx على Apache في معيار الأداء. كما أنه أسرع وأكثر كفاءة من اباتشي. يعمل Nginx أسرع 2.5 مرة من Apache وفقًا لاختبار معياري يعمل على ما يصل إلى 1000 اتصال متزامن.

  • HTTP / 2.0 عبر HTTP / 1.1

يدعم HTTP / 2.0 تعدد الإرسال ، على عكس HTTP / 1.1 الذي يحظر الموارد الأخرى. إذا تعذر تحميل مورد واحد ، يستخدم HTTP / 2.0 اتصال TCP لإرسال بيانات دفق متعددة في وقت واحد. يستخدم HTTP / 2.0 تقنيات ضغط رأس متقدمة من HTTP / 1.1

 تكوين Nginx لـ HTTP / 2.0
الخادم {
    استمع 443 ssl http2 ؛ // إعدادات http2
    ssl_certificate server.crt ؛
    ssl_certificate_key server.key ؛
}
  • تقديم محتوى مضغوط

 غالبًا ما يؤدي ضغط الاستجابات إلى تقليل حجم البيانات المرسلة بشكل كبير. ومع ذلك ، نظرًا لأن الضغط يحدث في وقت التشغيل ، فيمكنه أيضًا إضافة قدر كبير من تكاليف المعالجة التي يمكن أن تؤثر سلبًا على الأداء. 
تكوين Nginx لخدمة المحتوى المضغوط:
الخادم {
    تشغيل gzip
    تشغيل gzip_static ؛    
    نص gzip_types / نص عادي / css application / json application / x-javascript text / xml application / xml application / xml + rss text / javascript ؛
    gzip_proxied أي ؛
    gzip_vary على ؛
    gzip_comp_level 6 ؛
    gzip_buffers 16 8 كيلو ؛
    gzip_http_version 1.1 ؛    
    ...
}
  • MariaDB بدلاً من MySQL

قامت mariaDB بتحسين السرعة مقارنة بـ MySQL. يوفر تخزينًا مؤقتًا وفهرسة أسرع من MySQL. إنه أسرع بنسبة 24٪ تقريبًا من MySql في هذه الحالة. هناك مقاييس رئيسية أخرى يكون فيها mariaDB أفضل من MySQL. لذلك ، يفضل MariaDb على MySQL من حيث الأداء.

  • CDN

CDN تعني شبكة توصيل المحتوى. إنها مجموعة من الخوادم المنتشرة في جميع أنحاء العالم (وتعرف أيضًا باسم نقاط التواجد أو PoPs) ، والتي تعمل معًا لتقديم المحتوى بشكل أسرع. يخزن CDN النسخة المخبأة لمحتوى الموقع ويقدم المحتوى من أقرب خادم متاح. بعض موفري CDN المشهورين هم Cloudflare و Amazon cloudfront و Google cloud cdn وما إلى ذلك.