أهم الدروس المستفادة أثناء تحسين WordPress (لنجاح العملاء)
نشرت: 2022-09-15متى كانت آخر مرة حصلت فيها على تسع لحظات من السحابة؟
اجتياز المدرسة بألوان متطايرة .. أو عندما قبل صديقتك / صديقك اقتراحك؟
كانت لدي سحابة تسع لحظات قبل أسبوعين! كنت أتحدث في WordCamp Mumbai 2017 - أكبر برنامج WordCamp في الهند.
كان الموضوع شيئًا قريبًا من قلبي ، وشيء أتعامل معه كل يوم - الدروس المستفادة لتحسين WordPress لنجاح العملاء.
يتعلق الأمر بالمشكلات التي واجهتها في التعامل مع قواعد بيانات WordPress الكبيرة وكيف تعاملت معها.
ما الذي شجعني على التحدث في WordCamp Mumbai؟
يعد تطوير مكون إضافي لبرنامج WordPress تجربة تعليمية رائعة. يمكنك توسيع إطار عمل رائع ، والتركيز على كتابة التعليمات البرمجية التي تحل مشاكل العملاء والعمل مع أعضاء الفريق الرائعين.
في StoreApps ، لا يكتب المطورون التعليمات البرمجية فحسب ، بل يدعمون العملاء أيضًا. أعطاني حل استفسارات العملاء بعضًا من أكبر الدروس.
لذلك كل هذا هو روتيني اليومي ، وهو مثير للغاية.
لكن هل تعرف ما هو أكثر إثارة بالنسبة لي؟ العمل مع قواعد البيانات الكبيرة وحل مشاكل قواعد البيانات المعقدة!
يتم استخدام الإضافات الخاصة بنا من قبل أكثر من 35000 مستخدم. وقد رأيت الكثير من التحديات في العمل مع متاجر WooCommerce الكبيرة ومواقع WordPress الشهيرة.
لحسن الحظ ، تمكنت من حل هذه التحديات وتعلمت الكثير.
لكن انتظر ، مثلي تمامًا ، سيكون هناك المئات من المطورين الآخرين الذين يواجهون مشكلات مماثلة في العمل مع WordPress و WooCommerce.
لذلك قررت مشاركة دروسي مع الآخرين.
ويا لها من منصة أفضل من فرصة التحدث في أكبر برنامج WordCamp في الهند!
المشكلات الثلاث التي جعلتني سهرًا (بالحلول والدروس المستفادة منها)
أخيرًا ، ها هي المشكلات الثلاث التي كنت أتحدث عنها. لذلك دعونا نبدأ بها واحدًا تلو الآخر.
تقليل وقت تحميل الصفحة من 3 دقائق إلى ملي ثانية ...
مشكلة
لقد واجهت موقفًا مع البرنامج المساعد Smart Coupons حيث أدت وظيفة بسيطة لعرض القسائم على الصفحات المهمة من المتجر (مثل عربة التسوق ، وصفحات الخروج وحسابي) إلى تعطيل عملية الدفع.
Smart Coupons هو مكون إضافي لإنشاء ومعالجة القسائم وشهادات الهدايا بكميات كبيرة لمتجر WooCommerce.
المحلول
الآن ، كان من الممكن أن يؤدي استخدام WP Query إلى العديد من JOINs لإظهار القسائم المتاحة لمستخدم معين يتطلب تقييم شروط وصفية متعددة.
لذلك ، بدلاً من استخدام الطريقة المثالية للاستعلام عن قاعدة البيانات ، مثل WP Query ، كتبت استعلامات SQL مخصصة .
أيضًا ، في الاستعلامات المخصصة ، ما فعلته هو:
- بدلاً من التحقق من جميع الشروط الوصفية في استعلام MySQL واحد ، قمت ببساطة بتقييم الحالة الوصفية الأولى
- بعد ذلك ، قمت بتخزين قائمة post_ids (معرفات القسائم) مفصولة بفواصل في جدول الخيارات
- وبعد ذلك ، أقوم ببساطة بتخفيض نفس مجموعة post_ids من خلال تقييم كل من الشروط الوصفية الأخرى
فعلت هذا حتى حصلت على مجموعة نهائية من post_ids التي يجب عرضها للمستخدم المحدد.
تعزيز الحل
لقد أدى هذا إلى حل مشكلات تحميل الصفحة. ومع ذلك ، للحصول على تحميل الصفحة في أقل من مللي ثانية ، كما اقترح صديقنا ، كان علي إعادة تعريف المشكلة.
بدلاً من إظهار جميع القسائم التي يحق للمستخدم الحصول عليها ،
لقد قمت بتعيين حد لعدد القسائم التي سيتم عرضها للمستخدمين على صفحات سلة التسوق والدفع.
كيف أصبح خطأ المهلة الميزة الأكثر مبيعًا للمكوِّن الإضافي الخاص بنا؟
مشكلة
لمعالجة التحديث الضخم لقاعدة البيانات ، كتبت استعلامات مخصصة لأن استخدام وظائف WordPress الأساسية قد يصبح عبئًا كبيرًا.
مثال: إذا اضطر المرء إلى خفض أسعار جميع المنتجات في متجره / متجرها بنسبة 40٪ ، فعليه ببساطة تحديد "السعر" و "خفض بنسبة 40٪" والضغط على زر التحديث. هذا ممكن بسهولة باستخدام البرنامج المساعد Smart Manager الخاص بنا ، المصمم لجعل التحديثات المجمعة في متاجر WooCommerce أسهل.
ولكن ، بدأت عملية تحديث الدُفعات في التوقف وإعطاء أخطاء المهلة كلما حاول أي شخص تحديث منتجات 1k أو المتجر بأكمله في وقت واحد .
في البداية بدأت أبحث في تحسين الاستعلامات ولكن ذلك لم يساعد.
كان وضعي مشابهًا لمسابق قلعة تاكيشي. مهما حاولت ، ظللت أسقط في الماء.
المحلول
يقال أنه في بعض الأحيان يتعين عليك الخروج من المشكلة وإلقاء نظرة على المشكلة للعثور على السبب الدقيق.
فعلت الشيء نفسه واكتشفت أن المشكلة الفعلية كانت
ليس على مستوى الاستعلام ولكن على مستوى الطلب .
لذلك ، ما فعلته كان بدلاً من طلب واحد يقوم بجميع التحديثات ، لقد قسمت الأمر نفسه إلى عدة مكالمات AJAX متتالية تقوم بإجراء مجموعة أصغر من التحديثات والتي تخلصت تمامًا من أخطاء المهلة.
تعزيز الحل
الآن ، هذا النهج المتمثل في تقسيم الطلب الفردي إلى طلبات AJAX متعددة أصغر لم يحل خطأ المهلة فحسب ، بل أدى أيضًا إلى تحسين UX لتحديث الدُفعة .
الآن يتم تحديث مدير المتجر بشأن تقدم التحديث الذي زاد ببساطة من ثقتهم في المنتج.
أيضًا ، مكّن نفس الأسلوب Smart Manager من التعامل مع التحديثات المجمعة لمتجر WooCommerce من أي شكل وحجم ، وجعل Smart Manager أحد المكونات الإضافية الأكثر مبيعًا في StoreApps.
كيف أجبرتنا بيئات الاستضافة المشتركة على إعادة كتابة المكون الإضافي الخاص بنا؟
مشكلة
بالنسبة لأي مكون إضافي للإبلاغ ، من الأهمية بمكان عدم تقديم تقارير دقيقة ولكن سريعة عن الإحصائيات. الآن ، يتطلب الحصول على إحصائيات التقارير استعلامات متعددة تتضمن الانضمام إلى جدولين رئيسيين في WordPress ، أي المنشورات و postmeta.
كما رأينا أعلاه ، فإن JOINs باهظة الثمن .
في Smart Reporter (حل إعداد التقارير الخاص بنا لـ WooCommerce) ، كنا نعرض 20 إحصاءً مختلفًا لإعداد التقارير في عرض صفحة واحدة وذلك أيضًا عند تحميل الصفحة.
المحلول
لذلك ، اتبعت نفس النهج الذي تتبعه معظم حلول إعداد التقارير والذي كان إنشاء جدول ملخص ، أي جدول مخصص للهيكل المسطح.
سيحتوي هذا الجدول على ملخص لجميع البيانات المطلوبة بواسطة المكون الإضافي وبالتالي يلغي استخدام الصلات ويحسن أوقات تحميل الصفحة.
أيضًا ، للحفاظ على هذه الجداول الموجزة محدثة ، استخدمنا إجراءات وفلاتر WordPress.
ملخص الدروس
- اتبع أفضل الممارسات قدر الإمكان
- لا توجد استعلامات في الحلقة
- تجنب الصلات المعقدة الكبيرة
- أنجز المزيد على مستوى MySQL أكثر من مستوى PHP
- تعمق أكثر في الكود
- جداول الملخص / المخصصة / المؤقتة
- الانتباه إلى UX - الاستجابة والإشعارات ...
- هل تحل المشكلة الصحيحة؟
ما هو اختيارك؟
أنا متأكد من أنك تعاملت مع بعض المشاكل الضخمة ووجدت حلولاً لها. أخبرنا عنها في قسم التعليقات أدناه. سيكون من المفيد حقا للقراء.