Best Practices für die Checkout-Leistung

Der Checkout-Prozess in Adobe Commerce ist ein wichtiger Aspekt des Storefront-Erlebnisses. Sie stützt sich auf die integrierten Funktionen Warenkorb und Checkout.

Leistung ist der Schlüssel für ein gutes Benutzererlebnis. Sie können die Checkout-Leistung optimieren, indem Sie die folgenden Optionen für die Auftragsverarbeitung mit hohem Durchsatz konfigurieren:

Die Konfigurationsoptionen „AsyncOrder“, „Deferred Total Calculation“ und „Inventory Check“ beim Laden des Warenkorbs funktionieren unabhängig voneinander. Sie können alle drei Funktionen gleichzeitig verwenden oder die Funktionen in jeder beliebigen Kombination aktivieren und deaktivieren.

NOTE
Verwenden Sie keinen benutzerdefinierten PHP-Code, um die integrierten Warenkorb- und Checkout-Funktionen anzupassen. Zusätzlich zu möglichen Leistungsproblemen kann die Verwendung von benutzerdefiniertem PHP-Code zu komplexen Upgrades und Wartungsproblemen führen. Diese Probleme erhöhen Ihre Gesamtbetriebskosten. Wenn eine PHP-basierte Warenkorb- und Checkout-Anpassung unvermeidbar ist, verwenden Sie nur Adobe Commerce Marketplace-genehmigte Erweiterungen. Alle Marketplace-Erweiterungen unterliegen einer umfassenden Überprüfung um sicherzustellen, dass sie den Kodierungsstandards und Best Practices von Adobe Commerce entsprechen.

Asynchrone Auftragserteilung

Das Modul Async Order ermöglicht die asynchrone Auftragserteilung, die die Bestellung als received markiert, sie in eine Warteschlange stellt und Bestellungen aus der Warteschlange als „First-in-First-out“-Bestellungen verarbeitet. AsyncOrder ist deaktiviert.

Beispiel: Eine Kundin oder ein Kunde fügt ihrem bzw. seinem Warenkorb ein Produkt hinzu und wählt Proceed to Checkout aus. Sie füllen das Shipping Address aus, wählen ihre bevorzugte Shipping Method aus, wählen eine Zahlungsmethode aus und geben die Bestellung auf. Der Warenkorb wird geleert, die Bestellung wird als Received gekennzeichnet, aber die Produktmenge ist noch nicht angepasst, noch wird eine Verkaufs-E-Mail an den Kunden gesendet. Die Bestellung wird empfangen, aber die Bestelldetails sind noch nicht verfügbar, da die Bestellung noch nicht vollständig verarbeitet wurde. Er verbleibt in der Warteschlange, bis der placeOrderProcess Verbraucher beginnt, die Bestellung mit der Funktion Bestandsprüfung (standardmäßig aktiviert) überprüft und die Bestellung wie folgt aktualisiert:

  • Produkt verfügbar - Der Bestellstatus ändert sich in Ausstehend, die Produktmenge wird angepasst, eine E-Mail mit Bestelldetails wird an den Kunden gesendet, und die erfolgreichen Bestelldetails werden für die Anzeige in der Liste Bestellungen und Rücksendungen mit umsetzbaren Optionen wie Neu bestellen verfügbar.
  • Nicht vorrätiges Produkt oder geringe: Der Bestellstatus ändert sich in Abgelehnt, die Produktmenge wird nicht angepasst, eine E-Mail mit Bestelldetails zum Problem wird an den Kunden gesendet, und die Details zur abgelehnten Bestellung werden in der Liste Bestellungen und Rücksendungen ohne umsetzbare Optionen verfügbar.

Verwenden Sie die Befehlszeilenschnittstelle, um diese Funktionen zu aktivieren, oder bearbeiten Sie die app/etc/env.php gemäß den entsprechenden README-Dateien, die im Modul-Referenzhandbuch“ definiert.

So aktivieren Sie AsyncOrder:

Sie können AsyncOrder über die Befehlszeilenschnittstelle aktivieren:

bin/magento setup:config:set --checkout-async 1

Der Befehl set schreibt Folgendes in die app/etc/env.php:

...
   'checkout' => [
       'async' => 1
   ]

Siehe AsyncOrder im Modul-Referenzhandbuch.

So deaktivieren Sie AsyncOrder:

WARNING
Bevor Sie das Modul „AsyncOrder“ deaktivieren, müssen Sie sicherstellen, alle asynchronen Auftragsprozesse abgeschlossen sind.

Sie können AsyncOrder über die Befehlszeilenschnittstelle deaktivieren:

bin/magento setup:config:set --checkout-async 0

Der Befehl set schreibt Folgendes in die app/etc/env.php:

...
   'checkout' => [
       'async' => 0
   ]

AsyncOrder-Kompatibilität

AsyncOrder unterstützt eine begrenzte Anzahl von Adobe Commerce-Funktionen.

Kategorie
Unterstützte Funktion
Checkout-Typen
OnePage Checkout
Standard Checkout
B2B Negotiable Quote
Zahlungsmethoden
Scheck/Zahlungsanweisung
Nachnahme
Braintree/
PayFlow Pro
Versandmethoden
Alle Versandmethoden werden unterstützt.

Die folgenden Funktionen werden nicht von AsyncOrder unterstützt, funktionieren jedoch weiterhin synchron:

  • Zahlungsmethoden, die nicht in der Liste der unterstützten Funktionen enthalten sind
  • Mehradressen-Checkout
  • Erstellen von Admin-Aufträgen

Web-API-Unterstützung

Wenn das AsyncOrder-Modul aktiviert ist, werden die folgenden REST-Endpunkte und GraphQL-Mutationen asynchron ausgeführt:

REST:

GraphQL:

INFO
GraphQL unterstützt nicht das asynchrone Platzieren von übertragbaren Angebotsaufträgen.

Ausschließen von Zahlungsmethoden

Entwickler können bestimmte Zahlungsmethoden explizit von der asynchronen Auftragserteilung ausschließen, indem sie sie zum Magento\AsyncOrder\Model\OrderManagement::paymentMethods-Array hinzufügen. Bestellungen, die ausgeschlossene Zahlungsmethoden verwenden, werden synchron verarbeitet.

Asynchrone Reihenfolge der verhandelbaren Angebote

Mit B2B-Modul Negotiable Quote Async Order) können Sie Bestellartikel asynchron für die NegotiableQuote speichern. Für Sie müssen AsyncOrder und NegotiableQuote aktiviert sein.

Berechnung zurückgestellter Beträge

Das Modul verzögerte Gesamtberechnung optimiert den Checkout-Prozess, indem es die Gesamtberechnung bis zur Anforderung für den Warenkorb oder während der letzten Checkout-Schritte verschiebt. Wenn diese Option aktiviert ist, wird nur die Zwischensumme berechnet, wenn ein Kunde Produkte zum Warenkorb hinzufügt.

Die Berechnung verzögerter Gesamtwerte ist deaktiviert. Verwenden Sie die Befehlszeilenschnittstelle, um diese Funktionen zu aktivieren, oder bearbeiten Sie die app/etc/env.php gemäß den entsprechenden README-Dateien, die im Modul-Referenzhandbuch“ definiert.

So aktivieren Sie DeferredTotalCalculation:

Sie können DeferredTotalCalculation über die Befehlszeilenschnittstelle aktivieren:

bin/magento setup:config:set --deferred-total-calculating 1

Der Befehl set schreibt Folgendes in die app/etc/env.php:

...
   'checkout' => [
       'deferred_total_calculating' => 1
   ]

DeferredTotalCalculation deaktivieren:

Sie können DeferredTotalCalculation mithilfe der Befehlszeilenschnittstelle deaktivieren:

bin/magento setup:config:set --deferred-total-calculating 0

Der Befehl set schreibt Folgendes in die app/etc/env.php:

...
   'checkout' => [
       'deferred_total_calculating' => 0
   ]

Siehe DeferredTotalCalculating im Modul-Referenzhandbuch.

feste Produktsteuer

Wenn die Berechnung verzögerter Gesamtsummen aktiviert ist, wird die feste Produktsteuer (FPT) nicht in den Produktpreis und die Zwischensumme des Warenkorbs einbezogen, nachdem das Produkt zum Warenkorb hinzugefügt wurde. Die FTP-Berechnung wird zurückgestellt, wenn ein Produkt zum Mini-Warenkorb hinzugefügt wird. Die FTP wird korrekt im Warenkorb angezeigt, nachdem mit dem endgültigen Checkout fortgefahren wurde.

Inventarprüfung deaktivieren

Die globale Einstellung Inventar beim Laden des Warenkorbs aktivieren bestimmt, ob beim Laden eines Produkts in den Warenkorb eine Bestandsprüfung durchgeführt werden soll. Die Deaktivierung des Prozesses zur Bestandsprüfung verbessert die Leistung aller Checkout-Schritte, insbesondere bei der Verwendung von Massenprodukten im Warenkorb.

Wenn diese Option deaktiviert ist, wird beim Hinzufügen eines Produkts zum Warenkorb keine Inventarprüfung durchgeführt. Wenn diese Bestandsprüfung übersprungen wird, können einige nicht vorrätige Szenarien andere Fehlertypen auslösen. Eine Bestandskontrolle immer erfolgt beim Schritt der Bestellplatzierung, auch wenn diese deaktiviert ist.

Inventarprüfung beim Laden des Warenkorbs aktivieren ist standardmäßig aktiviert (auf Ja gesetzt). Um die Bestandsprüfung beim Laden des Warenkorbs zu deaktivieren, legen Sie Enable Inventory Check On Cart Load im Abschnitt Admin-Benutzeroberfläche Stores > Konfiguration > Katalog > Inventar > Stock-Optionen auf No. Siehe Konfigurieren globalerund Kataloginventar im Benutzerhandbuch.

Lastausgleich

Sie können dazu beitragen, die Last auf verschiedenen Knoten auszugleichen, indem Sie sekundäre Verbindungen für die MySQL-Datenbank und die Redis-Instanz aktivieren.

Adobe Commerce kann mehrere Datenbanken oder Redis-Instanzen asynchron lesen. Wenn Sie Commerce in einer Cloud-Infrastruktur verwenden, können Sie die sekundären Verbindungen konfigurieren, indem Sie die Werte MYSQL_USE_SLAVE_CONNECTION und REDIS_USE_SLAVE_CONNECTION in der .magento.env.yaml-Datei bearbeiten. Da nur ein Knoten Lese-/Schreibdatenverkehr verarbeiten muss, führt das Festlegen der Variablen auf true zu einer sekundären Verbindung für schreibgeschützten Datenverkehr. Legen Sie die Werte auf false fest, um ein vorhandenes schreibgeschütztes Verbindungs-Array aus der env.php zu entfernen.

Beispiel für die .magento.env.yaml:

stage:
  deploy:
    MYSQL_USE_SLAVE_CONNECTION: true
    REDIS_USE_SLAVE_CONNECTION: true
recommendation-more-help
c0c5bbed-4957-4162-81bc-120c837a1894