Best practice per le prestazioni del checkout
Il processo di estrazione in Adobe Commerce è un aspetto critico dell'esperienza di vetrina. Si basa sulle funzionalità integrate cart e checkout.
Le prestazioni sono fondamentali per mantenere una buona esperienza utente. Puoi ottimizzare le prestazioni di estrazione configurando le seguenti opzioni per l'elaborazione di ordini ad alta velocità:
- AsyncOrder—Elabora gli ordini in modo asincrono utilizzando una coda.
- Calcolo totale differito—Differisci i calcoli per i totali dell'ordine fino all'inizio dell'estrazione.
- Controllo scorte al caricamento del carrello—Scegliere di ignorare la convalida dell'inventario degli articoli del carrello.
- Bilanciamento del carico: abilita le connessioni secondarie per il database MySQL e l'istanza Redis.
Le opzioni di configurazione AsyncOrder, Deferred Total Calculation e Inventory Check on Cart Load funzionano tutte in modo indipendente. Potete utilizzare tutte e tre le feature contemporaneamente oppure attivarle e disattivarle in qualsiasi combinazione.
Posizionamento dell’ordine asincrono
Il modulo Ordine asincrono consente il posizionamento dell'ordine asincrono, che contrassegna l'ordine come received
, inserisce l'ordine in una coda ed elabora gli ordini dalla coda in base al primo ordine in uscita. AsyncOrder è disabilitato per impostazione predefinita.
Ad esempio, un cliente aggiunge un prodotto al carrello e seleziona Proceed to Checkout. Compila il modulo Shipping Address, seleziona il Shipping Method preferito, seleziona un metodo di pagamento e invia l'ordine. Il carrello è stato cancellato, l'ordine è contrassegnato come Received, ma la quantità di prodotto non è ancora stata regolata e non viene inviata un'e-mail di vendita al cliente. L'ordine viene ricevuto, ma i dettagli dell'ordine non sono ancora disponibili perché l'ordine non è stato completamente elaborato. Rimane in coda finché il consumatore placeOrderProcess
non inizia, verifica l'ordine con la funzionalità inventory check (attivata per impostazione predefinita) e aggiorna l'ordine come segue:
- Prodotto disponibile: lo stato dell'ordine diventa In sospeso, la quantità del prodotto viene adeguata, al cliente viene inviata un'e-mail con i dettagli dell'ordine e i dettagli dell'ordine riusciti diventano disponibili per la visualizzazione nell'elenco Ordini e restituzioni con opzioni actionable, ad esempio il riordino.
- Prodotto esaurito o fornitura insufficiente. Lo stato dell'ordine diventa Rifiutato, la quantità del prodotto non viene adeguata, viene inviata al cliente un'e-mail con i dettagli dell'ordine relativi al problema e i dettagli dell'ordine rifiutato diventano disponibili nell'elenco Ordini e restituzioni senza opzioni utilizzabili.
Utilizzare l'interfaccia della riga di comando per abilitare queste funzionalità o modificare il file app/etc/env.php
in base ai file README corrispondenti definiti nella Guida di riferimento al modulo.
Per abilitare AsyncOrder:
È possibile abilitare AsyncOrder tramite l'interfaccia della riga di comando:
bin/magento setup:config:set --checkout-async 1
Il comando set
scrive quanto segue nel file app/etc/env.php
:
...
'checkout' => [
'async' => 1
]
Vedi AsyncOrder nella Guida di riferimento al modulo.
Per disabilitare AsyncOrder:
È possibile disattivare AsyncOrder utilizzando l'interfaccia della riga di comando:
bin/magento setup:config:set --checkout-async 0
Il comando set
scrive quanto segue nel file app/etc/env.php
:
...
'checkout' => [
'async' => 0
]
Compatibilità con AsyncOrder
AsyncOrder supporta un set limitato di funzioni di Adobe Commerce.
Estrazione standard
Offerta negoziabile B2B
Contanti alla consegna
Braintree
PayPal PayFlow Pro
Le seguenti funzionalità sono non supportate da AsyncOrder, ma continuano a funzionare in modo sincrono:
- Metodi di pagamento non inclusi nell’elenco delle funzioni supportate
- Checkout multiindirizzo
- Creazione ordine amministratore
Supporto API web
Quando il modulo AsyncOrder è abilitato, i seguenti endpoint REST e le mutazioni GraphQL vengono eseguiti in modo asincrono:
RESTO:
GraphQL:
Esclusione dei metodi di pagamento
Gli sviluppatori possono escludere esplicitamente alcuni metodi di pagamento dal posizionamento asincrono dell'ordine aggiungendoli all'array Magento\AsyncOrder\Model\OrderManagement::paymentMethods
. Gli ordini che utilizzano metodi di pagamento esclusi vengono elaborati in modo sincrono.
Ordine asincrono offerta negoziabile
Il modulo B2B Negotiable Quote Async Order consente di salvare gli elementi dell'ordine in modo asincrono per la funzionalità NegotiableQuote
. AsyncOrder e NegotiableQuote devono essere abilitati.
Calcolo del totale differito
Il modulo Calcolo totale differito ottimizza il processo di pagamento posticipando il calcolo del totale fino a quando non viene richiesto per il carrello o durante i passaggi di pagamento finali. Quando questa opzione è attivata, solo il subtotale viene calcolato quando un cliente aggiunge prodotti al carrello.
Il calcolo del totale differito è disabilitato per impostazione predefinita. Utilizzare l'interfaccia della riga di comando per abilitare queste funzionalità o modificare il file app/etc/env.php
in base ai file README corrispondenti definiti nella Guida di riferimento al modulo.
Per abilitare DeferredTotalCalculation:
È possibile abilitare DeferredTotalCalculation utilizzando l'interfaccia della riga di comando:
bin/magento setup:config:set --deferred-total-calculating 1
Il comando set
scrive quanto segue nel file app/etc/env.php
:
...
'checkout' => [
'deferred_total_calculating' => 1
]
Per disabilitare DeferredTotalCalculation:
È possibile disattivare DeferredTotalCalculation utilizzando l'interfaccia della riga di comando:
bin/magento setup:config:set --deferred-total-calculating 0
Il comando set
scrive quanto segue nel file app/etc/env.php
:
...
'checkout' => [
'deferred_total_calculating' => 0
]
Vedi DeferredTotalCalculating nella Guida di riferimento del modulo.
Imposta Prodotto Fissa
Quando Calcolo totale differito è abilitato, l’imposta fissa sul prodotto (FPT, Fixed Product Tax) non viene inclusa nel prezzo del prodotto e nel subtotale del carrello del mini carrello dopo l’aggiunta del prodotto al carrello. Il calcolo dell’FPT viene differito quando si aggiunge un prodotto al mini carrello. L’FPT viene visualizzato correttamente nel carrello dopo aver proceduto al pagamento finale.
Disabilita controllo scorte
L'impostazione globale Abilita inventario al caricamento del carrello determina se eseguire un controllo dell'inventario durante il caricamento di un prodotto nel carrello. La disattivazione del processo di controllo dell’inventario migliora le prestazioni per tutti i passaggi di pagamento, in particolare quando si tratta di prodotti in blocco nel carrello.
Se è disabilitata, il controllo dell’inventario non viene eseguito quando si aggiunge un prodotto al carrello. Se questo controllo di inventario viene saltato, alcuni scenari esauriti potrebbero generare altri tipi di errori. Un controllo di inventario always si verifica al passaggio di posizionamento dell'ordine, anche se disabilitato.
Abilita controllo inventario al caricamento del carrello è abilitato (impostato su Sì) per impostazione predefinita. Per disabilitare il controllo dell'inventario durante il caricamento del carrello, impostare Enable Inventory Check On Cart Load su No
nella sezione Archivi > Configurazione > Catalogo > Inventario > Opzioni Stock. Consulta Configurare le opzioni globali e Inventario catalogo nella Guida utente.
Bilanciamento del carico
È possibile bilanciare il carico tra nodi diversi abilitando connessioni secondarie per il database MySQL e l'istanza Redis.
Adobe Commerce può leggere più database o istanze Redis in modo asincrono. Se si utilizza Commerce nell'infrastruttura cloud, è possibile configurare le connessioni secondarie modificando i valori MYSQL_USE_SLAVE_CONNECTION e REDIS_USE_SLAVE_CONNECTION nel file .magento.env.yaml
. Poiché solo un nodo deve gestire il traffico di lettura/scrittura, l'impostazione delle variabili su true
determina la creazione di una connessione secondaria per il traffico di sola lettura. Impostare i valori su false
per rimuovere qualsiasi array di connessione di sola lettura esistente dal file env.php
.
Esempio del file .magento.env.yaml
:
stage:
deploy:
MYSQL_USE_SLAVE_CONNECTION: true
REDIS_USE_SLAVE_CONNECTION: true