Skalierung eines großvolumigen WooCommerce-Shops mit Enterprise Search

Veröffentlicht: 2022-04-06

Wir haben das Flüstern gehört. „WordPress und E-Commerce-Lösungen wie WooCommerce wurden einfach nicht für großvolumige Mega-Stores mit umfangreichen Produktkatalogen entwickelt.“

Aber ist diese Realität oder nur eine veraltete Wahrnehmung es nicht wert, beachtet zu werden?

Wir glauben, dass es letzteres ist. Der Schlüssel für Handelsmarken, die schnell innovativ sein, Kunden Zeit und Geld sparen und benutzerfreundliche Handelslösungen wie WooCommerce in großem Maßstab – sagen wir 1 Million Produkte auf Lager – freischalten möchten, liegt in der Entwicklung von Enterprise Search von WordPress-VIP.

Um dies zu beweisen, haben wir uns der Herausforderung im WordPress-VIP-Labor gestellt und einen großvolumigen WooCommerce-Shop mit Lagerbeständen in mehreren Sprachen, Kategorien und Dutzenden von Attributen entworfen und einem Stresstest unterzogen. Sehen Sie sich an, was wir gelernt haben.

WooCommerce-Shop-Herausforderungen mit hohem Volumen

Je mehr Daten in eine MySQL-Datenbank eingehen, desto schwieriger wird es unserer Erfahrung nach, danach zu suchen. Sicherlich ist es eine ernsthafte Herausforderung, einen Katalog mit mehr als 1 Million Produkten anzuzeigen und den Kunden die Navigation zu erleichtern.

Zunächst haben wir uns entschieden, die internen Methoden von WooCommerce zu nutzen, um Produkte mit genügend Taxonomien und Begriffsbeziehungen zu generieren, um einem echten E-Commerce-Shop zu ähneln.

Ein hilfreiches Paket war WooCommerce Smooth Generator. Dadurch konnten wir die skalierbare WordPress-VIP-Cron-Architektur nutzen, die uns half, die Generierung von WooCommerce-Produkten um das Zehnfache zu beschleunigen. Gute Nachrichten: In nur 48 Stunden hatten wir einen Shop mit umfangreichen Daten – und diesen 1 Million Produkten – zum Testen.


Technischer Tipp: Um den anfänglichen Importprozess schnell zu halten, haben wir den Term-Recount-Prozess deaktiviert und ihn erst in der letzten Phase erneut ausgeführt:

 add_filter('woocommerce_product_recount_terms', '__return_false');

Für diesen Test haben wir das neueste WooCommerce (Version 6.1.1) und das Standard-Storefront-Design verwendet.

Bei der Bewertung des Frontends bemerkten wir große Verzögerungen beim Rendern von Seiten – langsame MySQL-Abfragen waren die Hauptursache. Die hauptsächlich betroffenen Bereiche betrafen:

  • Produktsuche Produktsuche
  • Produktlistenseiten für Kategorien
  • Gefilterte Suche

Geben Sie Enterprise Search ein – schnell, einfach und sicher

Es war klar, dass eines unserer neuesten Produkte, Enterprise Search, unerlässlich sein würde, um diese Probleme auf skalierbare Weise anzugehen. Wir haben festgestellt, dass es unserem WooCommerce-Shop mit hohem Volumen geholfen hat, ohne größere Code- oder Datenbankschemaänderungen zu funktionieren.

Zunächst einige Hintergrundinformationen: Enterprise Search wurde von Grund auf für die Bedürfnisse von Unternehmenskunden entwickelt. Es ist blitzschnell, selbst wenn das Datenbank- und Site-Volumen skaliert. Es basiert auf Elasticsearch und liefert genaue, nahezu sofortige Ergebnisse, sogar über Millionen von Inhalten hinweg.

Da es direkt in die VIP Cloud integriert ist, ohne dass externe Dienste erforderlich sind, indiziert Enterprise Search sofort neue Inhalte und zeigt schnell die neuesten und relevantesten Ergebnisse an.

Wir aktivierten Enterprise Search und führten einen anfänglichen Index für die vorhandenen Produktdaten durch, sodass wir die Daten aus unserer Datenbank horizontal speichern konnten.


Technischer Tipp: Die Aktivierung von Enterprise Search ist so einfach wie:

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

Entlastung durch Auslagern von Abfragen an Enterprise Search

Da wir wussten, dass jede WP_Query an Enterprise Search ausgelagert werden kann, begannen wir mit der Suche nach geeigneten Filtern, die es uns ermöglichten, die grundlegenden es => true in die langsamen MySQL-Abfragen einzufügen, die im Site-Frontend gefunden wurden. Anstatt die Datenbank abzufragen, wird das Ergebnis jeder Abfrage mithilfe eines schnellen API-Aufrufs von der Enterprise Search-Engine abgerufen.

Mit dieser Methode verbesserte sich die Antwortzeit für die Produktsuche, die Seiten mit Produktkategorien und die gefilterte Suche um das Zehnfache. Ja, 10x!

Beispielcode dafür, wie die Produkt-Frontend-Abfragen im Zusammenhang mit WP_Query an Enterprise Search ausgelagert wurden, finden Sie unten:

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

Das in kurzer Zeit erzielte Ergebnis war eine schnelle und skalierbare WooCommerce-Website mit hohem Volumen, die es ihr in Kombination mit der bestehenden VIP-Cloud-Architektur ermöglichte, große Mengen an Datenverkehr zu bewältigen.

Darüber hinaus wurde auch die WooCommerce-Backend-Geschwindigkeit verbessert, indem teure MySQL-Abfragen an Enterprise Search ausgelagert wurden, was ein optimierteres Erlebnis für Shop-Besitzer ermöglicht.


Technischer Tipp: Alle an Enterprise Search gesendeten Abfragen sind vollständig anpassbar, da sie mithilfe des folgenden Filters in JSON ElasticSearch Query DSL übersetzt werden:

 ep_pre_request_args

Großer Erfolg bei der Auftragsabwicklung

Unser nächster Testschritt bestand darin, ein hohes Volumen an Bestellungen und zugehörigen Kundendaten zu generieren.

Mit ähnlichen Schritten wie oben beschrieben haben wir es geschafft, ~1 Million Bestellungen und zugehörige Kundendaten zu erstellen.

Während unserer Tests haben wir festgestellt, dass die meisten Optimierungen mit langsamen MySQL-Backend-Abfragen zusammenhängen. Dies bedeutete wiederum, teurere Abfragen an Enterprise Search auszulagern und zugehörige Daten zu indizieren.

Hinweis: WooCommerce-Bestellungen werden als benutzerdefinierter Beitragstyp in WooCommerce gespeichert, daher müssen sie zusammen mit ihren benutzerdefinierten Beitragsstatus in den zulässigen Beitragstypen von Enterprise Search registriert werden. Beispielcode ist unten:

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

Abgesehen davon arbeitet das WooCommerce-Team an der Einführung einer neuen benutzerdefinierten Bestelltabelle, um die Abfrage verwandter Daten schneller und besser skalierbar zu ermöglichen. Dies wird Enterprise Search helfen, die Skalierbarkeit und Leistung einer E-Commerce-Anwendung weiter zu steigern.

Apropos Mehrsprachigkeit …

Ein Ansatz, der sich beim Einrichten einer mehrsprachigen E-Commerce-Website mit hohem Volumen gut skalieren lässt, besteht darin, separate Websites innerhalb einer WordPress-Netzwerkinstallation zu erstellen und jede separat mit Enterprise Search zu verbinden.

Inpsyde, ein WPVIP-Technologiepartner, bietet beispielsweise ein MultilingualPress-Plugin an, das die Erstellung eines ähnlichen Netzwerk-Setups erleichtert, das eine unbegrenzte Anzahl von Sprachen auf Websites mit hohem Volumen unterstützt.

Dies führt jedoch zu Herausforderungen im Zusammenhang mit der Synchronisierung von Beständen zwischen Standorten. Dafür gibt es mehrere Lösungen, darunter ein Central Stock for WooCommerce-Plugin, ebenfalls von Inpsyde.

Ein letztes Wort an der Kasse

Neben der Auslagerung teurerer MySQL-Abfragen bietet Enterprise Search auch neue Suchfunktionen – einschließlich der Unschärfe von Suchbegriffen, Synonymen und Gewichtung – die dazu beitragen können, eine WooCommerce-Shop-Suche mit hohem Volumen noch effizienter zu gestalten.

Können Sie sagen, dass wir Enterprise Search lieben? Offen gesagt, es ist eine echte Lösung, um die Skalierbarkeit Ihres Unternehmens zu erhöhen, die Kosten im Zusammenhang mit der Entwicklungs- und Implementierungszeit zu senken und den Weg für neue E-Commerce-Implementierungen zu ebnen.

Wir sehen bereits bestehende WordPress-VIP- und WooCommerce-Kunden, die erfolgreich und profitabel die Grenzen des hochvolumigen E-Commerce erweitern. Auf eine skalierbarere Zukunft!

Autor

Ovidiu Liuta, Erster Ingenieur, WordPress-VIP