Ridimensionare un negozio WooCommerce ad alto volume con la ricerca aziendale

Pubblicato: 2022-04-06

Abbiamo sentito i sussurri. "Le soluzioni WordPress e commerciali come WooCommerce semplicemente non sono state create per mega negozi ad alto volume con cataloghi di prodotti profondi".

Ma non vale la pena prestare attenzione a quella realtà o alla semplice percezione obsoleta?

Crediamo sia quest'ultimo. La chiave per i marchi commerciali che desiderano innovare rapidamente, risparmiare tempo e denaro ai clienti e sbloccare soluzioni commerciali facili da usare come WooCommerce su larga scala, ad esempio 1 milione di prodotti in stock , è tramite Enterprise Search, sviluppato di WordPress VIP.

Per dimostrarlo, abbiamo raccolto la sfida nel laboratorio VIP di WordPress, progettando e sottoponendo a test di stress un negozio WooCommerce ad alto volume con stock in più lingue, categorie e dozzine di attributi. Scopri cosa abbiamo imparato.

Sfide del negozio WooCommerce ad alto volume

In base alla nostra esperienza, più dati entrano in un database MySQL, più difficile diventa cercarli. Certamente, visualizzare un catalogo di oltre 1 milione di prodotti e facilitare la navigazione per i clienti è una sfida seria.

Per iniziare, abbiamo deciso di utilizzare i metodi interni di WooCommerce per generare prodotti con tassonomie e relazioni di termini sufficienti per assomigliare a un vero negozio di e-commerce.

Un pacchetto che ha aiutato è stato WooCommerce Smooth Generator. Ci ha permesso di utilizzare l'architettura scalabile di WordPress VIP Cron, che ci ha aiutato ad accelerare di dieci volte la generazione dei prodotti WooCommerce. Buone notizie: in sole 48 ore, abbiamo avuto un negozio con un volume elevato di dati e quei 1 milione di prodotti con cui testare.


Suggerimento tecnico: per velocizzare il processo di importazione iniziale, abbiamo disabilitato il processo di riconteggio dei termini e l'abbiamo eseguito di nuovo solo nella fase finale:

 add_filter('woocommerce_product_recount_terms', '__return_false');

Per questo test, abbiamo utilizzato l'ultimo WooCommerce (versione 6.1.1) e il tema Storefront predefinito.

Valutando il frontend, abbiamo iniziato a notare grandi ritardi nel rendering delle pagine: le query lente di MySQL erano la causa principale. Le principali aree interessate sono state relative a:

  • Ricerca prodotto Ricerca prodotto
  • Pagine di elenco dei prodotti di categoria
  • Ricerca filtrata

Accedi alla ricerca aziendale: veloce, facile, sicura

Era chiaro che uno dei nostri prodotti più recenti, Enterprise Search, sarebbe stato essenziale per affrontare questi problemi in modo scalabile. Abbiamo scoperto che ha aiutato il nostro negozio WooCommerce ad alto volume a funzionare senza modifiche importanti al codice o allo schema del database.

Innanzitutto, un po' di background: Enterprise Search è stato progettato da zero per le esigenze dei clienti aziendali. È velocissimo, anche per quanto riguarda il database e il volume del sito. Basato su Elasticsearch, fornisce risultati accurati e quasi istantanei anche su milioni di contenuti.

Poiché è direttamente integrato con VIP Cloud senza la necessità di servizi esterni, Enterprise Search indicizza immediatamente nuovi contenuti, facendo emergere rapidamente i risultati più recenti e più rilevanti.

Abbiamo abilitato la ricerca aziendale ed eseguito un indice iniziale sui dati di prodotto che avevamo, consentendoci di archiviare orizzontalmente i dati dal nostro database.


Suggerimento tecnico: abilitare la ricerca aziendale è semplice come:

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

Alleggerire il carico scaricando le query su Ricerca aziendale

Sapendo che qualsiasi WP_Query può essere scaricato su Enterprise Search, abbiamo iniziato a verificare la presenza di filtri appropriati che ci consentissero di iniettare es => true alle lente query MySQL trovate nel frontend del sito. Invece di eseguire query sul database, il risultato di ciascuna query viene recuperato dal motore di ricerca aziendale utilizzando una rapida chiamata API.

Utilizzando questo metodo, il tempo di risposta per la ricerca di prodotti, le pagine di elenco dei prodotti di categoria e la ricerca filtrata è decuplicato. Sì, 10 volte!

Di seguito è riportato il codice di esempio per il modo in cui le query front-end del prodotto relative a WP_Query sono state scaricate su 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 ); }

Il risultato, ottenuto in breve tempo, è stato un sito WooCommerce veloce e scalabile ad alto volume, che, in combinazione con l'architettura VIP Cloud esistente, gli ha permesso di gestire grandi quantità di traffico.

Inoltre, la velocità del back-end di WooCommerce è stata anche migliorata scaricando costose query MySQL su Enterprise Search, consentendo un'esperienza più ottimizzata per i proprietari di negozi.


Suggerimento tecnico: tutte le query inviate a Enterprise Search sono completamente personalizzabili in quanto vengono tradotte in JSON ElasticSearch Query DSL utilizzando il seguente filtro:

 ep_pre_request_args

Andando alla grande nell'elaborazione degli ordini

Il nostro passo successivo nel test è stato generare un volume elevato di ordini e relativi dati sui clienti.

Utilizzando passaggi simili come indicato sopra, siamo riusciti a creare circa 1 milione di ordini e relativi dati sui clienti.

Durante i nostri test, abbiamo scoperto che la maggior parte delle ottimizzazioni erano correlate a query back-end MySQL lente. Ciò significava, ancora una volta, scaricare le query più costose su Enterprise Search e indicizzare i dati correlati.

Nota: gli ordini WooCommerce sono archiviati come tipo di post personalizzato in WooCommerce, quindi devono essere registrati nei tipi di post consentiti di Enterprise Search insieme ai loro stati di post personalizzati. Il codice di esempio è di seguito:

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

Per inciso, il team di WooCommerce sta lavorando per introdurre una nuova tabella degli ordini personalizzati per aiutare a interrogare i dati relativi più velocemente e in modo più scalabile. Ciò consentirà a Enterprise Search di continuare ad aumentare la scalabilità e le prestazioni di un'applicazione di e-commerce.

A proposito di opzioni multilingue...

Un approccio che si adatta bene durante la configurazione di un sito di e-commerce multilingue ad alto volume consiste nel creare siti separati all'interno di un'installazione di rete WordPress e consentire a ciascuno di essere connesso separatamente a Enterprise Search.

Inpsyde, un partner tecnologico WPVIP, ad esempio, offre un plug-in MultilingualPress che facilita la creazione di una configurazione di rete simile che supporta un numero illimitato di lingue su siti ad alto volume.

Tuttavia, questo crea sfide relative alla sincronizzazione delle scorte tra i siti. Esistono molteplici soluzioni per risolvere questo problema, incluso un plug-in Central Stock per WooCommerce, sempre di Inpsyde.

Un'ultima parola alla cassa

Oltre a scaricare query MySQL più costose, Enterprise Search offre anche nuove funzionalità di ricerca, inclusi termini di ricerca sfocati, sinonimi e ponderazione, che possono aiutare a rendere ancora più efficiente la ricerca di un negozio WooCommerce ad alto volume.

Puoi dire che amiamo la ricerca aziendale? Francamente, è una vera soluzione per aumentare la scalabilità della tua attività, ridurre i costi relativi ai tempi di sviluppo e implementazione e aprire la strada a nuove implementazioni di e-commerce.

Stiamo già vedendo clienti WordPress VIP e WooCommerce esistenti che spingono con successo e profitto i confini dell'e-commerce ad alto volume. Ecco un futuro più scalabile!

Autore

Ovidiu Liuta, Premier Engineer, WordPress VIP