Aanbevolen werkwijzen voor het wijzigen van het formaat van catalogusafbeeldingen
Alle catalogusafbeeldingen moeten worden vergroot of verkleind voordat een winkel in productie wordt genomen. Als u het formaat van afbeeldingen niet aanpast voordat de productie wordt uitgevoerd, wordt het formaat van de afbeelding tijdens het laden van de pagina forceerd aangepast. Hierdoor wordt de snelheid van de site aanzienlijk verlaagd en wordt de server gedurende de eerste dagen tot weken na het opstarten meer belast.
De trage weg
Gebruik het standaard CLI bevel resize alle beelden:
bin/magento catalog:images:resize
De nadelen van deze aanpak zijn:
- Het proces is single-threaded
- Het proces wijzigt de grootte van afbeeldingen die al zijn gewijzigd
- Het proces kan niet worden onderbroken, wat dagen kan duren
De snelle (er) manier
Asynchrone afbeeldingsformaatwijziging is geïntroduceerd in Adobe Commerce 2.4 en kan afbeeldingen sneller vergroten of verkleinen.
-
Start op elke webserver tijdelijk een aantal extra wachtrijhandlers (twee keer zoveel fysieke processors per server):
code language-bsh for i in {1.."$((2 * `nproc --all`))"};do bin/magento queue:consumers:start media.storage.catalog.image.resize &;done;
-
Verifieer dat de rijmanagers lopen:
code language-bash pgrep -fl media.storage.catalog.image.resize
-
Vul de wachtrij met alle aanvragen voor het vergroten of verkleinen van afbeeldingen:
code language-bash bin/magento catalog:images:resize --async
-
Nadat de grootte van alle afbeeldingen is gewijzigd, beëindigt u het proces:
code language-bash pkill -f media.storage.catalog.image.resize
De snelle weg
Er is een andere manier om het formaat van afbeeldingen te wijzigen met de voorzijde.
De voordelen van deze aanpak zijn:
- Het proces is multi-threaded
- Het proces bestaat uit meerdere servers (als u meerdere webknooppunten hebt, een taakverdelingsmechanisme en gedeelde schijfruimte voor de map
media/
) - Tijdens het proces worden afbeeldingen overgeslagen waarvan de grootte al is gewijzigd
Deze benadering resizes 100.000 beelden in minder dan 8 uren, terwijl het CLI bevel 6 dagen om vergt te voltooien.
- Log in bij de server.
- Navigeer naar
pub/media/catalog/product
en noteer een van de hashes (bijvoorbeeld 0047d83143a5a3a4683afdf116df680). - In de volgende voorbeelden vervangt u
www.example.com
door het domein van de winkel en vervangt u de hash door de hash die u hebt vermeld.
code language-bash |
---|
|
Het nadeel van siege
is dat het alle URL's in de 10 keer bezoekt als de gelijktijdige uitvoering is ingesteld op 10.
code language-bash |
---|
|
code language-bash |
---|
|
Het argument -P
bepaalt het aantal draden.
De één-lijn voor het voorbeeld find/curl
, voor het geval u curl
van de zelfde machine kunt in werking stellen de beelden zijn:
code language-bash |
---|
|
Vervang www.example.com
nogmaals door het domein van uw website en stel -P
in op het aantal threads dat uw server kan verwerken zonder vastlopen.
De uitvoer retourneert een lijst met alle productafbeeldingen in de winkel. U kunt door de afbeeldingen (met siege
of een andere crawler) kruipen met alle servers en processorcores die voor u beschikbaar zijn en de formaatcache aanzienlijk sneller genereren dan bij andere benaderingen.
Als u één URL voor de afbeeldingscache bezoekt, worden alle afbeeldingsgrootten op de achtergrond gegenereerd als deze nog niet bestaan. Bovendien worden bestanden overgeslagen waarvan de grootte al is gewijzigd.
- Adobe Commerce op cloud-infrastructuurprojecten kan de grootte van productafbeeldingen verschuiven naar de Fastly-service. Zie Diepe beeldoptimaliseringin de Gids van de Wolk.
- Als u de externe opslagmodule gebruikt, kunt u ook proberen de afbeeldingsgrootte te verschuiven naar nginx. Zie beeld het resizing voor verre opslagin de Gids van de Configuratie vormen.