Prácticas recomendadas de cambio de tamaño de imagen de catálogo

Se debe cambiar el tamaño de todas las imágenes del catálogo antes de que una tienda entre en producción. Al no cambiar el tamaño de las imágenes antes de la producción, se fuerza el cambio de tamaño de la imagen durante la carga de la página, lo que reduce significativamente la velocidad del sitio y aumenta la carga del servidor en los primeros días o semanas después del lanzamiento.

La forma lenta

Utilice el comando CLI predeterminado para cambiar el tamaño de todas las imágenes:

bin/magento catalog:images:resize

Las desventajas de este enfoque incluyen:

  • El proceso es de un solo hilo
  • El proceso cambia el tamaño de las imágenes a las que ya se ha cambiado el tamaño
  • El proceso no se puede interrumpir, lo que puede llevar días

La(s) forma(s) rápida(s)

El cambio de tamaño de imagen asincrónico se introdujo en Adobe Commerce 2.4 y puede cambiar el tamaño de las imágenes más rápido.

  1. En cada servidor web, inicie algunos controladores de cola adicionales temporalmente (el doble del número de procesadores físicos por servidor):

    code language-bsh
    for i in {1.."$((2 * `nproc --all`))"};do bin/magento queue:consumers:start media.storage.catalog.image.resize &;done;
    
  2. Compruebe que los controladores de cola se están ejecutando:

    code language-bash
    pgrep -fl media.storage.catalog.image.resize
    
  3. Rellene la cola con todas las solicitudes de cambio de tamaño de imagen:

    code language-bash
    bin/magento catalog:images:resize --async
    
  4. Una vez cambiado el tamaño de todas las imágenes, finalice el proceso:

    code language-bash
    pkill -f media.storage.catalog.image.resize
    

La vía rápida

Hay otra forma de cambiar el tamaño de las imágenes mediante el front-end.

Las ventajas de este enfoque incluyen:

  • El proceso es multiproceso
  • El proceso es de varios servidores (si tiene varios nodos web, un equilibrador de carga y espacio en disco compartido para el directorio media/)
  • El proceso omite las imágenes cuyo tamaño ya se ha cambiado

Este enfoque cambia el tamaño de 100 000 imágenes en menos de 8 horas, mientras que el comando CLI tarda 6 días en completarse.

  1. Inicie sesión en el servidor de.
  2. Vaya a pub/media/catalog/product y anote uno de los hash (por ejemplo, 0047d83143a5a3a4683afdf1116df680).
  3. En los ejemplos siguientes, reemplace www.example.com por el dominio de su tienda y reemplace el hash por el que anotó.
sed
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
sitio

La desventaja de siege es que visita todas las direcciones URL del servidor 10 veces si la concurrencia está establecida en 10.

code language-bash
siege --file=./images.txt --user-agent="image-resizer" --no-follow --no-parser --concurrent=10 --reps=once
curl
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)

El argumento -P determina el número de subprocesos.

bash de una línea

El marcador de una línea para el ejemplo find/curl, en caso de que pueda ejecutar curl desde el mismo equipo en el que se encuentran las imágenes:

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"

De nuevo, reemplace www.example.com por el dominio de su sitio web y establezca -P en el número de subprocesos que su servidor puede controlar sin que se bloqueen.

La salida devuelve una lista de todas las imágenes de producto de la tienda. Puede rastrear las imágenes (con siege o cualquier otro rastreador) utilizando todos los servidores y núcleos de procesador disponibles y generar la caché de cambio de tamaño a una velocidad significativamente mayor que otros enfoques.

Al visitar una URL de caché de imagen, se generan todos los tamaños de imagen en segundo plano, si aún no existen. Además, omite los archivos que ya han cambiado de tamaño.

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