Scalarea unui magazin WooCommerce cu volum mare cu Enterprise Search

Publicat: 2022-04-06

Am auzit șoaptele. „WordPress și soluțiile comerciale, cum ar fi WooCommerce, pur și simplu nu au fost create pentru magazine cu volum mare, cu cataloage de produse detaliate.”

Dar nu merită să-i acordăm atenție realitatea sau doar percepția învechită?

Noi credem că este cea din urmă. Cheia pentru mărcile comerciale care doresc să inoveze rapid, să economisească timp și bani clienților și să deblocheze soluții comerciale ușor de utilizat, cum ar fi WooCommerce la scară - să zicem, la scară de 1 milion de produse în stoc - este prin Enterprise Search, dezvoltat de WordPress VIP.

Pentru a demonstra acest lucru, am acceptat provocarea în laboratorul VIP WordPress, proiectând și testând un magazin WooCommerce de mare volum, cu stoc în mai multe limbi, categorii și zeci de atribute. Vezi ce am învățat.

Provocări de mare volum pentru magazinul WooCommerce

Din experiența noastră, cu cât sunt mai multe date care intră într-o bază de date MySQL, cu atât devine mai greu să le cauți. Cu siguranță, afișarea unui catalog cu peste 1 milion de produse și facilitarea navigației clienților este o provocare serioasă.

Pentru început, am decis să folosim metodele interne WooCommerce pentru a genera produse cu suficiente taxonomii și relații de termeni pentru a semăna cu un adevărat magazin de comerț electronic.

Un pachet care a ajutat a fost WooCommerce Smooth Generator. Ne-a permis să folosim arhitectura scalabilă WordPress VIP Cron, care ne-a ajutat să accelerăm generarea de produse WooCommerce de zece ori. Vești bune: în doar 48 de ore, am avut un magazin cu date de mare volum – și acele 1 milion de produse – pentru a testa.


Sfat tehnic: pentru a menține procesul inițial de import rapid, am dezactivat procesul de renumărare a termenilor și am executat-o ​​din nou doar în etapa finală:

 add_filter('woocommerce_product_recount_terms', '__return_false');

Pentru acest test, am folosit cea mai recentă WooCommerce (versiunea 6.1.1) și tema implicită Storefront.

Evaluând frontend-ul, am început să observăm întârzieri mari în randarea paginilor - interogările lente MySQL au fost cauza principală. Principalele zone afectate au fost legate de:

  • Căutare produs căutare produs
  • Pagini cu lista de produse pe categorii
  • Căutare filtrată

Introduceți Căutarea companiei — rapid, ușor, sigur

Era clar că unul dintre cele mai noi produse ale noastre, Enterprise Search, va fi esențial în abordarea acestor probleme într-un mod scalabil. Am descoperit că a ajutat la funcționarea magazinului nostru WooCommerce cu volum mare fără modificări majore de cod sau de schema bazei de date.

În primul rând, câteva elemente de bază: Căutarea întreprinderii a fost concepută de la zero pentru nevoile clienților întreprinderii. Este fulgerător, chiar și ca volumul bazei de date și al site-ului. Construit pe Elasticsearch, oferă rezultate precise, aproape instantanee, chiar și pentru milioane de conținut.

Deoarece este integrat direct cu VIP Cloud, fără servicii externe necesare, Enterprise Search indexează imediat noi piese de conținut, arătând rapid cele mai noi și mai relevante rezultate.

Am activat Enterprise Search și am rulat un index inițial pe datele despre produse pe care le aveam, permițându-ne să stocăm orizontal datele din baza noastră de date.


Sfat tehnic: activarea Căutării pentru întreprinderi este la fel de simplă ca:

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

Ușurarea încărcării prin descărcarea interogărilor către Enterprise Search

Știind că orice WP_Query poate fi descărcat în Enterprise Search, am început să verificăm filtrele adecvate care ne-au permis să injectăm es => true interogărilor lente MySQL găsite în frontend-ul site-ului. În loc de a interoga baza de date, rezultatul fiecărei interogări este preluat din motorul de căutare Enterprise folosind un apel rapid API.

Folosind această metodă, timpul de răspuns pentru căutarea de produse, paginile de listare a produselor din categorii și căutarea filtrată s-a îmbunătățit de zece ori. Da, de 10 ori!

Exemplu de cod pentru modul în care interogările de interfață de produs legate de WP_Query au fost descărcate în Enterprise Search este mai jos:

 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 ); }

Rezultatul, atins în scurt timp, a fost un site WooCommerce rapid și scalabil cu volum mare, care, în combinație cu arhitectura VIP Cloud existentă, i-a permis să gestioneze cantități mari de trafic.

În plus, viteza de backend WooCommerce a fost, de asemenea, îmbunătățită prin descărcarea interogărilor MySQL costisitoare către Enterprise Search, permițând o experiență mai optimizată proprietarilor de magazine.


Sfat tehnic: toate interogările trimise către Enterprise Search sunt complet personalizabile, deoarece sunt traduse în JSON ElasticSearch Query DSL folosind următorul filtru:

 ep_pre_request_args

Merg în mare măsură în procesarea comenzilor

Următorul nostru pas în testare a fost să generăm un volum mare de comenzi și date legate de clienți.

Utilizând pași similari celor menționați mai sus, am reușit să creăm ~ 1 milion de comenzi și date despre clienți aferente.

În timpul testării noastre, am constatat că majoritatea optimizărilor au fost legate de interogări lente MySQL backend. Acest lucru a însemnat, din nou, descărcarea de interogări mai scumpe către Enterprise Search și indexarea datelor aferente.

Notă: comenzile WooCommerce sunt stocate ca tip de postare personalizat în WooCommerce, așa că trebuie să fie înregistrate în tipurile de postări permise de Enterprise Search împreună cu stările lor personalizate de postare. Exemplul de cod este mai jos:

 // 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()) ); });

În afară de aceasta, echipa WooCommerce lucrează pentru a introduce un nou tabel de comenzi personalizat pentru a ajuta la interogarea datelor legate mai rapid și într-un mod mai scalabil. Acest lucru va ajuta Enterprise Search să continue să crească scalabilitatea și performanța unei aplicații de comerț electronic.

Apropo de opțiuni multilingve...

O abordare care se extinde bine în timpul creării unui site de comerț electronic multilingv cu volum mare este crearea de site-uri separate în cadrul unei instalări de rețea WordPress și permiterea fiecăreia să fie conectat separat la Enterprise Search.

Inpsyde, un partener tehnologic WPVIP, de exemplu, oferă un plugin MultilingualPress care facilitează crearea unei configurații de rețea similare care acceptă un număr nelimitat de limbi pe site-uri cu volum mare.

Cu toate acestea, acest lucru creează provocări legate de sincronizarea stocurilor între site-uri. Există mai multe soluții pentru a rezolva acest lucru, inclusiv un plugin Central Stock pentru WooCommerce, tot de la Inpsyde.

Un ultim cuvânt la casă

Pe lângă descărcarea de interogări MySQL mai costisitoare, Enterprise Search oferă, de asemenea, o nouă funcționalitate de căutare - inclusiv termeni de căutare neclare, sinonime și ponderare - care pot ajuta să facă o căutare de mare volum în magazin WooCommerce și mai eficientă.

Puteți spune că ne place Căutarea întreprinderilor? Sincer, este o soluție reală pentru creșterea scalabilității afacerii dvs., reducerea costurilor legate de timpul de dezvoltare și implementare și deschiderea drumului către noi implementări de comerț electronic.

Vedem deja clienții WordPress VIP și WooCommerce existenți depășind cu succes și profitabil granițele comerțului electronic cu volum mare. Iată un viitor mai scalabil!

Autor

Ovidiu Liuta, Inginer Premier, WordPress VIP