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.
-
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;
-
Compruebe que los controladores de cola se están ejecutando:
code language-bash pgrep -fl media.storage.catalog.image.resize
-
Rellene la cola con todas las solicitudes de cambio de tamaño de imagen:
code language-bash bin/magento catalog:images:resize --async
-
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.
- Inicie sesión en el servidor de.
- Vaya a
pub/media/catalog/product
y anote uno de los hash (por ejemplo, 0047d83143a5a3a4683afdf1116df680). - En los ejemplos siguientes, reemplace
www.example.com
por el dominio de su tienda y reemplace el hash por el que anotó.
code language-bash |
---|
|
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 |
---|
|
code language-bash |
---|
|
El argumento -P
determina el número de subprocesos.
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 |
---|
|
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.
- Adobe Commerce en proyectos de infraestructura en la nube puede descargar el cambio de tamaño de la imagen del producto en el servicio Fastly. Consulte Optimización de imagen profunda en la Guía de Cloud.
- Si utiliza el módulo de almacenamiento remoto, también puede intentar descargar el cambio de tamaño de la imagen a nginx. Consulte Configurar el cambio de tamaño de la imagen para almacenamiento remoto en la Guía de configuración.