Best practice per il ridimensionamento delle immagini del catalogo
Tutte le immagini del catalogo devono essere ridimensionate prima che un archivio entri in produzione. Il mancato ridimensionamento delle immagini prima della produzione forza il ridimensionamento delle immagini durante il caricamento della pagina, riducendo in modo significativo la velocità del sito e aumentando il carico del server nei primi giorni o settimane dopo il lancio.
Il modo lento
Utilizzare il comando CLI predefinito per ridimensionare tutte le immagini:
bin/magento catalog:images:resize
Gli svantaggi di questo approccio comprendono:
- Il processo è a thread singolo
- Il processo ridimensiona le immagini già ridimensionate
- Il processo non può essere interrotto e ciò può richiedere giorni
La modalità veloce
Il ridimensionamento asincrono delle immagini è stato introdotto in Adobe Commerce 2.4 e può ridimensionare le immagini più rapidamente.
-
Su ogni server web, avvia temporaneamente alcuni gestori di code aggiuntivi (il doppio del numero di processori fisici per server):
code language-bsh for i in {1.."$((2 * `nproc --all`))"};do bin/magento queue:consumers:start media.storage.catalog.image.resize &;done;
-
Verificare che i gestori delle code siano in esecuzione:
code language-bash pgrep -fl media.storage.catalog.image.resize
-
Compila la coda con tutte le richieste di ridimensionamento immagini:
code language-bash bin/magento catalog:images:resize --async
-
Dopo aver ridimensionato tutte le immagini, terminare il processo:
code language-bash pkill -f media.storage.catalog.image.resize
La via veloce
Esiste un altro modo per ridimensionare le immagini utilizzando il front-end.
I vantaggi di questo approccio includono:
- Il processo è multithread
- Il processo è multiserver (se sono presenti più nodi Web, un load balancer e spazio su disco condiviso per la directory
media/
) - Il processo ignora le immagini già ridimensionate
Questo approccio consente di ridimensionare 100.000 immagini in meno di 8 ore, mentre il completamento del comando CLI richiede 6 giorni.
- Accedi al server.
- Passa a
pub/media/catalog/product
e annota uno degli hash (ad esempio, 0047d83143a5a3a4683afdf1116df680). - Negli esempi seguenti, sostituisci
www.example.com
con il dominio del tuo archivio e sostituisci l'hash con quello che hai annotato.
code language-bash |
---|
|
Lo svantaggio di siege
è che visita tutti gli URL 10 volte se la concorrenza è impostata su 10.
code language-bash |
---|
|
code language-bash |
---|
|
L'argomento -P
determina il numero di thread.
Una riga per l'esempio find/curl
, nel caso in cui sia possibile eseguire curl
dallo stesso computer in cui si trovano le immagini:
code language-bash |
---|
|
Sostituisci www.example.com
con il dominio del tuo sito Web e imposta -P
sul numero di thread che il server può gestire senza arresti anomali.
L’output restituisce un elenco di tutte le immagini del prodotto presenti nell’archivio. È possibile eseguire la ricerca per indicizzazione delle immagini (con siege
o qualsiasi altro crawler) utilizzando tutti i server e i core del processore disponibili e generare la cache di ridimensionamento a una velocità notevolmente superiore rispetto ad altri approcci.
Se si visita un URL della cache delle immagini, vengono generate in background tutte le dimensioni delle immagini, se non esistono ancora. Inoltre, ignora i file che sono già stati ridimensionati.
- I progetti Adobe Commerce su infrastrutture cloud possono scaricare il ridimensionamento dell’immagine del prodotto sul servizio Fastly. Vedi Ottimizzazione immagine approfondita nella Guida cloud.
- Se utilizzi il modulo di archiviazione remota, puoi anche provare a scaricare il ridimensionamento dell'immagine su nginx. Vedi Configurare il ridimensionamento delle immagini per l'archiviazione remota nella Guida alla configurazione.