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.

  1. 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;
    
  2. Verifieer dat de rijmanagers lopen:

    code language-bash
    pgrep -fl media.storage.catalog.image.resize
    
  3. Vul de wachtrij met alle aanvragen voor het vergroten of verkleinen van afbeeldingen:

    code language-bash
    bin/magento catalog:images:resize --async
    
  4. 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 media/ map)
  • 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.

  1. Log in bij de server.
  2. Navigeren naar pub/media/catalog/product en noteer een van de hashes (bijvoorbeeld 0047d83143a5a3a4683afdf116df680).
  3. In de volgende voorbeelden vervangt u www.example.com met het domein van uw winkel en vervang de hash door de hash die u hebt vermeld.
gebruikt
code language-bash
cd pub/
find ./media/catalog/product -path ./media/catalog/product/cache -prune -o -type f -print | sed 's~./media/catalog/product/~https://www.example.com/media/catalog/product/cache/0047d83143a5a3a4683afdf1116df680/~g' > images.txt
beleg

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
siege --file=./images.txt --user-agent="image-resizer" --no-follow --no-parser --concurrent=10 --reps=once
krullen
code language-bash
xargs -0 -n 1 -P 10 curl -X HEAD -s -w "%{http_code} %{time_starttransfer} %{url_effective}\n" < <(tr \\n \\0 <images.txt)

De -P argument bepaalt het aantal draden.

bash one-liner

De één-lijn voor find/curl voorbeeld, voor het geval u kunt lopen curl vanaf dezelfde computer staan de afbeeldingen op:

code language-bash
find ./media/catalog/product -path ./media/catalog/product/cache -prune -o -type f -print | sed 's~./media/catalog/product/~https://www.example.com/media/catalog/product/cache/0047d83143a5a3a4683afdf1116df680/~g' | xargs -n 1 -P 10 curl -X HEAD -s -w "%{http_code} %{time_starttransfer} %{url_effective}\n"

Opnieuw vervangen www.example.com met het domein en de set van uw website -P aan het aantal draden uw server kan behandelen zonder te crashen.

De uitvoer retourneert een lijst met alle productafbeeldingen in de winkel. U kunt de afbeeldingen horizontaal verslepen (met siege of een andere crawler) met gebruik van alle servers en processorcores die u tot uw beschikking hebt, en het vergroten of verkleinen van de cache met aanzienlijk hogere snelheid 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.

NOTE
recommendation-more-help
754cbbf3-3a3c-4af3-b6ce-9d34390f3a60