Bästa tillvägagångssätt för att ändra storlek på katalogbilder
Alla katalogbilder bör storleksändras innan en butik går till produktion. Om det inte går att ändra storlek på bilder innan produktionen tvingar det fram en storleksändring under sidinläsningen, vilket minskar webbplatshastigheten avsevärt och ökar serverbelastningen under de första dagarna till veckor efter start.
Den långsamma vägen
Använd det förvalda CLI-kommandot för att ändra storlek på alla bilder:
bin/magento catalog:images:resize
Nackdelarna med detta tillvägagångssätt är bland annat:
- Processen är entrådad
- Processen ändrar storlek på bilder som redan har ändrat storlek
- Processen kan inte avbrytas, vilket kan ta dagar
Snabba(er) vägen
Asynkron storleksändring av bilder introducerades i Adobe Commerce 2.4 och det går snabbare att ändra storlek på bilder.
-
Starta tillfälligt några extra köhanterare på alla webbservrar (dubbelt så många fysiska processorer per server):
code language-bsh for i in {1.."$((2 * `nproc --all`))"};do bin/magento queue:consumers:start media.storage.catalog.image.resize &;done;
-
Kontrollera att köhanterarna körs:
code language-bash pgrep -fl media.storage.catalog.image.resize
-
Fyll kön med alla begäranden om storleksändring av bilder:
code language-bash bin/magento catalog:images:resize --async
-
Avsluta processen när alla bilder har ändrat storlek:
code language-bash pkill -f media.storage.catalog.image.resize
Den snabba vägen
Det finns ett annat sätt att ändra storlek på bilder med hjälp av förgrunden.
Fördelarna med detta tillvägagångssätt är bland annat:
- Processen är flertrådig
- Processen är flerserver (om du har flera webbnoder, en belastningsutjämnare och delat diskutrymme för katalogen
media/
) - Processen hoppar över bilder som redan har ändrat storlek
Detta arbetssätt ändrar storlek på 100 000 bilder på mindre än 8 timmar, medan det tar 6 dagar att slutföra CLI-kommandot.
- Logga in på servern.
- Navigera till
pub/media/catalog/product
och notera en av hash-koderna (till exempel 0047d83143a5a3a4683afdf116df680). - Ersätt
www.example.com
med domänen för din butik i följande exempel och ersätt hash-koden med den som du angav.
code language-bash |
---|
|
Nackdelen med siege
är att den besöker alla URL:er i tio gånger om samtidighet har angetts till 10.
code language-bash |
---|
|
code language-bash |
---|
|
Argumentet -P
avgör antalet trådar.
Den linjära för exemplet find/curl
om du kan köra curl
från samma dator som bilderna finns på:
code language-bash |
---|
|
Ersätt igen www.example.com
med webbplatsens domän och ställ in -P
på det antal trådar som servern kan hantera utan att krascha.
Utdata returnerar en lista med alla produktbilder i butiken. Du kan crawla bilderna (med siege
eller någon annan crawler) med alla servrar och processorkärnor som är tillgängliga för dig och generera cacheminnet för storleksändring med betydligt högre hastighet än andra metoder.
Om du besöker en URL för bildcache genereras alla bildstorlekar i bakgrunden om de inte finns än. Dessutom hoppas filer som redan har ändrat storlek över.
- Adobe Commerce i molninfrastrukturprojekt kan avlasta storleksändringen av produktbilder till tjänsten Snabbt. Se Djupbildoptimering i molnguiden.
- Om du använder fjärrlagringsmodulen kan du också försöka med att avlasta bildens storlek så att den ändras till nginx. Se Konfigurera storleksändring av bilder för fjärrlagring i Konfigurationshandboken.