توسيع نطاق متجر WooCommerce كبير الحجم باستخدام بحث المؤسسة

نشرت: 2022-04-06

لقد سمعنا همسات. "WordPress وحلول التجارة مثل WooCommerce ببساطة لم تُصمم للمتاجر الضخمة ذات الحجم الكبير مع كتالوجات المنتجات العميقة."

ولكن هل هذا الواقع أو مجرد تصور عفا عليه الزمن لا يستحق الاهتمام به؟

نعتقد أنه الأخير. المفتاح للعلامات التجارية التجارية التي ترغب في الابتكار بسرعة ، وتوفير الوقت والمال للعملاء ، وإطلاق العنان لحلول تجارية سهلة الاستخدام مثل WooCommerce على نطاق واسع - على سبيل المثال ، 1 مليون منتج في المخزون - عبر Enterprise Search ، تم تطويره بواسطة WordPress VIP.

لإثبات ذلك ، واجهنا التحدي في معمل WordPress VIP ، حيث صممنا متجرًا ضخمًا لـ WooCommerce واختباره ، مع مخزون عبر لغات وفئات وعشرات السمات. تحقق مما تعلمناه.

تحديات متجر WooCommerce بكميات كبيرة

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

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

إحدى الحزم التي ساعدت هي WooCommerce Smooth Generator. يتيح لنا الاستفادة من بنية WordPress VIP Cron القابلة للتطوير ، والتي ساعدتنا على تسريع توليد منتجات WooCommerce بعشرة أضعاف. أخبار سارة: في غضون 48 ساعة فقط ، كان لدينا متجر به بيانات كبيرة الحجم - وتلك المليون منتج - لاختبارها.


نصيحة تقنية: للحفاظ على سرعة عملية الاستيراد الأولية ، قمنا بتعطيل عملية إعادة فرز المصطلحات وقمنا بتشغيلها مرة أخرى فقط في المرحلة النهائية:

 add_filter('woocommerce_product_recount_terms', '__return_false');

في هذا الاختبار ، استخدمنا أحدث إصدار من WooCommerce (الإصدار 6.1.1) وموضوع واجهة المتجر الافتراضي.

عند تقييم الواجهة الأمامية ، بدأنا نلاحظ تأخيرات كبيرة في عرض الصفحات - كانت استعلامات MySQL البطيئة هي السبب الأساسي. المناطق الرئيسية المتضررة تتعلق بما يلي:

  • البحث عن المنتج البحث عن المنتج
  • فئة صفحات قائمة المنتجات
  • بحث مصفى

أدخل Enterprise Search - سريع وسهل وآمن

كان من الواضح أن أحد أحدث منتجاتنا ، Enterprise Search ، سيكون ضروريًا في معالجة هذه المشكلات بطريقة قابلة للتطوير. لقد وجدنا أنها ساعدت وظيفة متجر WooCommerce كبير الحجم لدينا دون تغيير التعليمات البرمجية الرئيسية أو مخطط قاعدة البيانات.

أولاً ، بعض المعلومات الأساسية: تم تصميم Enterprise Search من الألف إلى الياء لتلبية احتياجات عملاء المؤسسة. إنه سريع للغاية ، حتى مع حجم قاعدة البيانات والموقع. استنادًا إلى Elasticsearch ، فإنه يوفر نتائج دقيقة وفورية تقريبًا حتى عبر ملايين أجزاء المحتوى.

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

قمنا بتمكين Enterprise Search وقمنا بتشغيل فهرس أولي على بيانات المنتج التي لدينا ، مما يسمح لنا بتخزين البيانات أفقيًا من قاعدة البيانات الخاصة بنا.


نصيحة تقنية: يعد تمكين Enterprise Search أمرًا بسيطًا مثل:

 define( 'VIP_ENABLE_VIP_SEARCH', true ); // Enables Enterprise Search. define( 'VIP_ENABLE_VIP_SEARCH_QUERY_INTEGRATION', true ); // Integrates search queries with Enterprise Search.

تخفيف العبء عن طريق إلغاء تحميل الاستعلامات إلى Enterprise Search

مع العلم أنه يمكن إلغاء تحميل أي WP_Query إلى Enterprise Search ، بدأنا في التحقق من المرشحات المناسبة التي سمحت لنا بحقن الأساسيات es => true لاستعلامات MySQL البطيئة الموجودة في الواجهة الأمامية للموقع. بدلاً من الاستعلام عن قاعدة البيانات ، يتم جلب نتيجة كل استعلام من محرك بحث المؤسسة باستخدام استدعاء سريع لواجهة برمجة التطبيقات.

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

نموذج التعليمات البرمجية لكيفية إلغاء تحميل استعلامات الواجهة الأمامية للمنتج المتعلقة بـ WP_Query إلى Enterprise Search أدناه:

 add_action( 'pre_get_posts', 'offload_query_to_ES' ); function offload_query_to_ES( $query ) { // Avoid unintentional query offloading for backend queries. if ( is_admin() ) { return; } if ( ! $query->is_main_query() ) { return; } if( 'product' !== $query->get( 'post_type' ) ) { return; } // Offloading query to Enterprise Search. $query->set( 'es', true ); }

كانت النتيجة ، التي تم تحقيقها في وقت قصير ، عبارة عن موقع WooCommerce سريع وقابل للتطوير بكميات كبيرة ، والذي سمح له ، بالاقتران مع بنية VIP Cloud الحالية ، بمعالجة كميات كبيرة من حركة المرور.

بالإضافة إلى ذلك ، تم تحسين سرعة الواجهة الخلفية لـ WooCommerce أيضًا عن طريق إلغاء تحميل استعلامات MySQL باهظة الثمن إلى Enterprise Search ، مما يتيح تجربة أكثر تحسينًا لأصحاب المتاجر.


نصيحة تقنية: جميع الاستعلامات المرسلة إلى Enterprise Search قابلة للتخصيص بالكامل حيث يتم ترجمتها إلى JSON ElasticSearch Query DSL باستخدام عامل التصفية التالي:

 ep_pre_request_args

يجري كبير في معالجة الطلبات

كانت خطوتنا التالية في الاختبار هي إنشاء عدد كبير من الطلبات وبيانات العملاء ذات الصلة.

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

أثناء الاختبار ، وجدنا أن معظم التحسينات كانت مرتبطة باستعلامات MySQL الخلفية البطيئة. وهذا يعني ، مرة أخرى ، إلغاء تحميل الاستعلامات الأكثر تكلفة إلى Enterprise Search وفهرسة البيانات ذات الصلة.

ملاحظة: يتم تخزين أوامر WooCommerce كنوع منشور مخصص في WooCommerce ، لذلك يجب تسجيلهم في أنواع المنشورات المسموح بها في Enterprise Search جنبًا إلى جنب مع حالات النشر المخصصة الخاصة بهم. رمز عينة أدناه:

 // The `shop_order` post type is not public, so we need to add this to get them to index. add_filter( 'ep_indexable_post_types', function( $post_types ) { $post_types['shop_order'] = 'shop_order'; return $post_types; } ); // Adding the custom order statuses to the index. add_filter( 'ep_indexable_post_status', function( $statuses ) { return array_merge( $statuses, array_keys(wc_get_order_statuses()) ); });

جانبا ، يعمل فريق WooCommerce على تقديم جدول أوامر مخصص جديد للمساعدة في الاستعلام عن البيانات ذات الصلة بشكل أسرع وبطريقة أكثر قابلية للتوسع. سيساعد ذلك Enterprise Search على الاستمرار في زيادة قابلية التوسع والأداء لتطبيق التجارة الإلكترونية.

الحديث عن خيارات متعددة اللغات ...

أحد الأساليب التي تتوسع بشكل جيد أثناء إنشاء موقع تجارة إلكترونية كبير الحجم ومتعدد اللغات هو إنشاء مواقع منفصلة ضمن تثبيت شبكة WordPress والسماح لكل منها بالاتصال بشكل منفصل بـ Enterprise Search.

على سبيل المثال ، يقدم Inpsyde ، شريك تقنية WPVIP ، مكونًا إضافيًا MultilingualPress يسهل إنشاء إعداد شبكة مماثل يدعم عددًا غير محدود من اللغات في المواقع ذات الحجم الكبير.

ومع ذلك ، فإن هذا يخلق تحديات تتعلق بمزامنة المخزون بين المواقع. توجد حلول متعددة لمعالجة هذا الأمر ، بما في ذلك Central Stock لمكوِّن WooCommerce الإضافي ، أيضًا من Inpsyde.

كلمة أخيرة عند الخروج

إلى جانب تفريغ المزيد من استعلامات MySQL الأكثر تكلفة ، يقدم Enterprise Search أيضًا وظائف بحث جديدة - بما في ذلك مصطلحات البحث الغموض والمرادفات والوزن - التي يمكن أن تساعد في جعل البحث في متجر WooCommerce بكميات كبيرة أكثر كفاءة.

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

نحن نرى بالفعل عملاء WordPress VIP و WooCommerce الحاليين يدفعون بنجاح وربح حدود التجارة الإلكترونية ذات الحجم الكبير. إليكم مستقبل أكثر قابلية للتوسع!

مؤلف

Ovidiu Liuta ، مهندس أول ، WordPress VIP