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:
- AsyncOrder - Verarbeitet Bestellungen asynchron mithilfe einer Warteschlange.
- Berechnung aufgeschoben - Berechnungen für Auftragssummen werden bis zum Beginn des Checkouts aufgeschoben.
- Bestandsprüfung beim Laden des Warenkorbs - Wählen Sie diese Option, um die Inventarüberprüfung von Warenkorbartikeln zu überspringen.
- Lastenausgleich - Aktivieren Sie sekundäre Verbindungen für die MySQL-Datenbank und die Redis-Instanz.
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.
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:
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.
Standard Checkout
B2B Negotiable Quote
Nachnahme
Braintree/
PayFlow Pro
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:
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