Best practice di configurazione
Commerce fornisce molte impostazioni e strumenti che puoi utilizzare per migliorare il tempo di risposta sulle pagine e fornire una velocità effettiva più elevata.
Processi Cron
Tutte le operazioni asincrone in Commerce vengono eseguite utilizzando il comando Linux cron
. Vedi Configura ed esegui cron per configurarlo correttamente.
Indicizzatori
Un indicizzatore può essere eseguito in modalità Update on Save o Update on Schedule. La modalità Update on Save indicizza immediatamente ogni volta che il catalogo o altri dati cambiano. Questa modalità presuppone un'intensità ridotta di operazioni di aggiornamento e navigazione nel negozio. Può causare notevoli ritardi e la mancata disponibilità dei dati in caso di carichi elevati. È consigliabile utilizzare Aggiorna in base alla pianificazione per le prestazioni, in quanto memorizza informazioni sugli aggiornamenti dei dati ed esegue l'indicizzazione per porzioni in background tramite un processo cron specifico. È possibile modificare la modalità di ogni indicizzatore Commerce separatamente nella pagina di configurazione System > Tools > Index Management. L'indice Customer Grid deve essere sempre impostato sulla modalità Update on Save.
Cache
Quando avvii lo store in produzione, attiva tutte le cache dalla pagina System > Tools > Cache Management. Si consiglia vivamente di utilizzare Varnish, in quanto è una soluzione efficiente per la cache delle pagine di produzione.
Notifiche e-mail asincrone
L’abilitazione dell’impostazione "Notifiche e-mail asincrone" sposta in background i processi che gestiscono le notifiche e-mail di pagamento e di elaborazione dell’ordine. Per abilitare questa funzione, vai a Stores> Settings > Configuration > Sales > Sales Emails > General Settings >Asynchronous Sending. Per ulteriori informazioni, vedere E-mail vendite nella Guida utente amministratore.
Elaborazione dati ordine asincrono
In alcuni casi le vendite intensive in una vetrina si verificano contemporaneamente all'elaborazione intensiva degli ordini da parte di Commerce. È possibile configurare Commerce per distinguere questi due pattern di traffico a livello di database per evitare conflitti tra le operazioni di lettura e scrittura nelle tabelle corrispondenti. Puoi archiviare e indicizzare i dati dell’ordine in modo asincrono. Gli ordini vengono inseriti in un archivio temporaneo e spostati in blocco nella griglia di Order Management senza alcuna collisione. È possibile attivare questa opzione da Stores> Settings > Configuration > Advanced > Developer > Grid Settings >Asynchronous indexing. Per ulteriori informazioni, vedere Aggiornamenti pianificati alla griglia nella Guida utente amministratore.
Developer
.Salvataggio configurazione asincrona
Per i progetti con un numero elevato di configurazioni a livello di archivio, il salvataggio di una configurazione di archivio può richiedere un tempo eccessivo o causare un timeout. Il modulo Configurazione asincrona consente il salvataggio asincrono della configurazione eseguendo un processo cron che utilizza un consumer per elaborare il salvataggio in una coda di messaggi. AsyncConfig è disabilitato per impostazione predefinita.
Puoi abilitare AsyncConfig utilizzando l’interfaccia della riga di comando:
bin/magento setup:config:set --config-async 1
Il comando set
scrive quanto segue nel file app/etc/env.php
:
...
'config' => [
'async' => 1
]
Avvia il seguente consumer per iniziare a elaborare i messaggi nella coda in base al principio "primo in primo out":
bin/magento queue:consumers:start saveConfigProcessor --max-messages=1
Aggiornamento scorte differite
In periodi di vendite intensive, Commerce può rimandare gli aggiornamenti delle scorte relativi agli ordini. In questo modo si riduce al minimo il numero di operazioni e si accelera il processo di posizionamento dell'ordine. Tuttavia, questa opzione è rischiosa e può essere utilizzata solo quando gli ordini inevasi vengono attivati nel punto vendita, perché può portare a quantità di scorte negative. Questa opzione consente di migliorare notevolmente le prestazioni dei flussi di cassa per i negozi che possono facilmente ricaricare le scorte su richiesta. Per attivare gli aggiornamenti delle azioni differite sul sito, vai a Stores> Settings > Configuration > Catalog > Inventory > Product Stock Options >Use Deferred Stock Update. Per ulteriori informazioni, vedere Gestione dell'inventario nella Guida utente di Adobe Commerce.
Impostazioni di ottimizzazione lato client
Per migliorare la reattività della vetrina dell'istanza Commerce, passare all'amministratore in modalità predefinita o sviluppatore e modificare le impostazioni seguenti:
Stores-> Configuration -> Advanced -> Developer:
Developer
.Quando attivi l'opzione Enable JavaScript Bundling, consenti a Commerce di unire tutte le risorse JS in uno o più bundle caricati nelle pagine della vetrina. Il bundling di JS comporta un numero inferiore di richieste al server, migliorando le prestazioni della pagina. Aiuta anche il browser a memorizzare in cache le risorse JS alla prima chiamata e a riutilizzarle per tutte le ulteriori ricerche. Questa opzione consente anche la valutazione lenta, in quanto tutto JS viene caricato come testo. Avvia l'analisi e la valutazione del codice solo dopo che sono state attivate azioni specifiche sulla pagina. Tuttavia, questa impostazione non è consigliata per i negozi in cui il tempo di caricamento della prima pagina è estremamente critico, perché tutto il contenuto JS verrà caricato alla prima chiamata.
Suggerimenti per il bundling
- È consigliabile utilizzare strumenti di terze parti per la minimizzazione e il bundling (come r.js). Commerce meccanismi incorporati non sono ottimali e vengono forniti come alternative di fallback.
- L’attivazione del protocollo HTTP/2 può essere una buona alternativa all’utilizzo del bundling JS. Il protocollo offre molti degli stessi vantaggi. È abilitato per impostazione predefinita in Adobe Commerce sui progetti di infrastruttura cloud.
- È consigliabile non utilizzare impostazioni obsolete, come l’unione di file JS e CSS, in quanto sono state progettate solo per il file JS caricato in modo sincrono nella sezione HEAD della pagina. L’utilizzo di questa tecnica può causare il malfunzionamento del bundling e della logica requireJS.
Convalida dei segmenti cliente
I commercianti che hanno un numero elevato di segmenti di clienti possono riscontrare un significativo deterioramento delle prestazioni con le azioni dei clienti, ad esempio l'accesso dei clienti e l'aggiunta di prodotti al carrello.
Le azioni dei clienti attivano un processo di convalida per i segmenti dei clienti, che è ciò che può causare il deterioramento delle prestazioni. Per impostazione predefinita, Adobe Commerce convalida ogni segmento in tempo reale per definire quali segmenti dei clienti corrispondono e quali no.
Per evitare un peggioramento delle prestazioni, è possibile impostare l'opzione di configurazione del sistema Real-time Check if Customer is Matched by Segment su No per convalidare i segmenti dei clienti tramite una singola query SQL con condizione combinata.
Per abilitare questa ottimizzazione, vai a Stores> Settings > Configuration > Customers > Customer Configuration > Customer Segments >Real-time Check if Customer is Matched by Segment.
Questa impostazione migliora le prestazioni della convalida del segmento del cliente se nel sistema sono presenti molti segmenti di clienti. Tuttavia, non funziona con implementazioni di database suddiviso o quando non vi sono clienti registrati.
Pianificazione della manutenzione del database database
È consigliabile eseguire backup periodici del database per le istanze di staging e produzione. A causa dell'intensa attività di I/O delle operazioni di backup, è possibile che si verifichino backup più lenti e potenziali problemi. L'esecuzione simultanea di processi di database per più ambienti potrebbe risultare più lenta a causa di conflitti per le risorse disponibili.
Per migliorare le prestazioni, pianificare l'esecuzione dei backup in successione, uno alla volta, nei momenti di minore utilizzo. Questo metodo evita i conflitti di I/O e riduce i tempi di completamento, in particolare per le istanze più piccole, i database più grandi e così via.
Ad esempio, consigliamo di pianificare un backup del database di produzione seguito dal database di staging quando gli store riscontrano visite minori.
Limita il numero di prodotti nella griglia
Per migliorare le prestazioni della griglia prodotti per i cataloghi di grandi dimensioni, si consiglia di limitare il numero di prodotti nella griglia con l'impostazione di configurazione di sistema Stores> Settings > Configuration > Advanced > Admin > Admin Grids >Limit Number of Products in Grid.
Questa impostazione di configurazione del sistema è disabilitata per impostazione predefinita. Attivandola, puoi limitare il numero di prodotti nella griglia a un valore specifico. Records Limit è un'impostazione personalizzabile con un valore minimo predefinito di 20000
.
Quando l'impostazione Limit Number of Products in Grid è abilitata e il numero di prodotti nella griglia è maggiore del limite di record, viene restituita la raccolta limitata di record. Al raggiungimento del limite, i record totali trovati, il numero di record selezionati e gli elementi di impaginazione sono nascosti dall'intestazione della griglia.
Quando il numero totale di prodotti nella griglia è limitato, non influisce sulle azioni di massa della griglia del prodotto. Influisce solo sul livello di presentazione della griglia del prodotto. Ad esempio, nella griglia è presente un numero limitato di prodotti 20000
, l'utente fa clic su Select All, seleziona l'azione di massa Update attributes e aggiorna alcuni attributi. Di conseguenza, vengono aggiornati tutti i prodotti, non la raccolta limitata di 20000
record.
La limitazione relativa alla griglia di prodotti influisce solo sulle raccolte di prodotti utilizzate dai componenti dell’interfaccia utente. Di conseguenza, questa limitazione non riguarda tutte le griglie di prodotti. Solo quelli che utilizzano Magento\Catalog\Ui\DataProvider\Product\ProductCollection
.
Puoi limitare le raccolte della griglia di prodotti solo sulle pagine seguenti:
- Griglia prodotti catalogo
- Aggiungi griglia prodotti correlati/up-selling/cross-selling
- Aggiungi prodotti al bundle prodotto
- Aggiungi prodotti al prodotto gruppo
- Pagina Crea ordine amministratore
Se non desideri che la griglia prodotti sia limitata, ti consigliamo di utilizzare i filtri in modo più preciso affinché la raccolta dei risultati contenga meno elementi di Records Limit.