for clean php magento vagrant e-commerce magento2

php - clean - Magento 2 va terriblemente lento(Modo desarrollador)



dockerfile for magento 2 (11)

@ El gato de Henry tiene razón. Non linux os + Magento2 = desastre. Si no está trabajando duro con xmls, puede activar el caché magento bin/magento cache:enable y usar bin/magento cache:clean cuando modifica algo en estos archivos o, mejor aún, deshabilitar ciertos tipos de caché bin/magento cache:disable db_ddl full_page . @Igor Sydorenko tiene toda la razón, deshabilitar la fusión / minización de css js MEJORARÁ MUCHO el rendimiento del modo desarrollador.

Recientemente comencé a desarrollar proyectos de magento 2.

Primero probé en Windows con xampp y fue un desastre ... cada página de actualización fue una pesadilla, alrededor de 30-40 segundos para cargar la página. Leí sobre esto, que los archivos del sistema de Windows son tan lentos en el trabajo con magento debido a la gran estructura que tiene, y el artículo casi lo obligó a usar Linux para desarrollar proyectos en magento.

El problema es que necesito Windows para las aplicaciones de otra compañía que solo funcionan en Windows. Intenté instalar una máquina virtual con Virtualbox, mejoró un poco ... pero el hecho de que esté trabajando en una máquina virtual me molestó ...

La siguiente solución y estoy trabajando actualmente, es usar vagrant. De acuerdo, me siento bien desarrollándome de esta manera, pero sigue siendo lento ... 15-20s ...

Mi configuración en Vagrant es 5120MB (la PC tiene 8GB) y uso todos los núcleos de mi PC 4.

Me siento tan mal trabajando así ... cuando estaba trabajando en mis proyectos anteriores, con symfony / Laravel / Codeigniter, era como:

escriba algunas líneas de código, pestaña al navegador, F5, vea al instante los cambios.

En M2: escriba algunas líneas de código, pestaña al navegador, F5, espere ... espere ... bien, ahora se actualiza la página, pero no está cargada, espere ... espere ... hmmm casi ... está bien. Sin cambios, pero limpié el caché ... ohhh, supongo que también tuve que eliminar archivos estáticos. Ve por ello ... espera otra vez ...

Dios ... ¿No hay manera de que M2 vaya más rápido? Solo pregunto 5s o algo así ... es solo que me siento tan tonto mirando la pantalla esperando todo el tiempo ...

Para aclaraciones, solo pregunto por el modo de desarrollo, intenté instalar otro proyecto de magento en el modo de producción para probar las cosas más rápido y luego está bien fluido en comparación con el modo de desarrollador ... porque ... omg ... solo intenta hacer un flujo de trabajo de orden una y otra vez ...

Bueno, eso es todo ... Lo único que no probé es usar el entorno Linux en la computadora ... pero es lo mismo que usar vagrant ... No entiendo ... ¿cómo estás desarrollando desarrolladores de M2? en desarrolladores de aplicaciones frontales especiales ... No creo que estén funcionando igual que yo ... esperando 20 segundos para cargar las páginas + limpiar la memoria caché + eliminar archivos estáticos, etc.

Detalles: probé todo con vagrant pero no mejoré, actualmente estoy en Ubuntu 15.04, Apache 2.4, PHP 5.6 (probé 7 pero igual) mysql 5.6

Esta es la pestaña de red: http://i.imgur.com/HG7mbeX.png


Actualización 2018, Magento 2.2.4

Vagrant + Windows + Magento2 = desastre. Vagrant + Apple + Magento2 = desastre.

Ubuntu + Magento2 = cocina a gas.

Los módulos simples, por ejemplo, un widget, toman muchos días más de las 2-3 horas esperadas y no es posible recordar lo que está haciendo si se tarda un minuto en abrir una página, particularmente si tiene que borrar cachés, compilar, Actualice o cualquier otra cosa que debería tomar sin tiempo en absoluto.

Esto lo he experimentado de primera mano, desde que trabajé en una oficina donde las opciones son Mac o Windows. Después de pasar un día entero tratando de cambiar la directiva de la plantilla y no hacer un cambio de configuración en 8 horas, pensé en probarlo en una caja de Linux para ver si me había vuelto loco o si esta idea de Vagrant es tan útil como eso. Vago borracho durmiendo en el parque por la carretera.

La vieja caja de Linux con memoria RAM anémica, un SSD antiguo, Apache de valores y sin caché de fantasía completaron la tarea sin problemas, pude cambiar entre los modos de desarrollo y de producción sin esfuerzo y obtener lo que me había tomado días para no hacerlo en minutos.

La máquina de trabajo era i7 de 8ª generación, la configuración de Vagrant era mucho el bebé de alguien y había pasado mucho tiempo construyendo la bestia. Sin embargo, las placas tectónicas se mueven más rápido. Vagrant y la virtualización pueden estar de moda, pero no sirve para el desarrollo de M2. De hecho, instalé M2 e hice toda la configuración de db y vhost para ella en menos tiempo del que se necesita para construir una caja Vagrant.

En cuanto al rendimiento, ya que M2 en una configuración básica de Linux es 10 veces más rápido que un esfuerzo Vagrant torpe, es fácil ver dónde están los problemas de velocidad real de Magento 2. Si enciendes Lighthouse en Chrome verás que TTFB está absolutamente bien, pero el rendimiento se reduce a la mitad si minimizas y combinas el JS + CSS. Esto se debe a que M2 tiene un megabyte de scripts para descargar. Este es el asesino de rendimiento. Si está trabajando en una caja de Vagrant, nunca verá esto y no tendrá la velocidad para solucionarlo. Al arreglarlo, me refiero a escribir un tema adecuado que no tenga tonterías como jQuery cargando en cada página.

Para la producción, necesita algo que se pueda escalar para que pueda obtener las mejoras de velocidad normales para eso, por ejemplo, Redis, caché de código de operación, barniz, php-fpm ajustado, MySQL / MariaDB ajustado. Si está desarrollando Linux, entonces puede probar estas cosas en localhost sabiendo que funcionarán bien en la producción. Con esa abominación que es Vagrant, usted estará incursionando prematuramente con estas optimizaciones porque está esperando y rezando por una máquina que funcione porque necesita hacer el trabajo. Sin embargo, al hacerlo, y con la ausencia de velocidad nativa, no conseguirás nada.

Si no tiene una máquina de repuesto para instalar Linux, vaya a la punta local, obtenga cualquier PC, introduzca un SSD y estará listo.


En el modo "desarrollador", todas las cachés estaban deshabilitadas. Por eso, Magento se vuelve lento. Sugiero habilitar cachés por ejecutar comando

./bin/magento cache:enable

Sin embargo, debe limpiar el caché ./bin/magento cache:clean cada vez que modifique los archivos XML o las configuraciones.


Esta es mi receta para desarrollar temas / módulos en localhost para Magento 2.2 y 2.3:

  • Macbook Pro
  • Valet Plus (Nginx, MySQL 5.7, PHP7.1 y 7.2: puede cambiar fácilmente entre las versiones de PHP con valet use 7.1 o valet use 7.2 ) https://github.com/weprovide/valet-plus
  • memory_limit establecido en 4G
  • Asegúrese de que Magento esté configurado en modo desarrollador: php bin/magento deploy:mode:set developer
  • TODOS LOS CACHOS HABILITADOS excepto FPC. Cada vez que necesito probar un cambio que involucre archivos de configuración, etc., elimino manualmente el contenido de la carpeta var/cache o la carpeta generated/code para los cambios DI. El tipo de caché que especialmente ralentiza todo es el caché de configuración, por lo que debe estar habilitado o las páginas de frontend / backend se cargarán terriblemente lento.
  • Uso Grunt Watch y la extensión Chrome de Livereload para ver mis cambios en los archivos .less sin tener que implementar archivos estáticos con cada cambio. https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/css-topics/css_debug.html
  • Cada vez que cambio un archivo JS navego a pub / static / [adminhtml / frontend] / [theme] / [locale] / y elimino SOLAMENTE la carpeta donde está el archivo estático correspondiente al archivo JS en el que cambié la vida. Esto me impide Tener que desplegar TODOS los archivos estáticos. Magento regenerará solo los archivos estáticos de la carpeta eliminada, lo que ahorra MUCHO tiempo (asegúrese de realizar una actualización completa en su navegador cada vez que elimine un archivo estático)

Todavía no es una configuración perfecta, pero es la forma más rápida que he encontrado hasta ahora para ser productivo sin arrancarme el cabello.


Hice este vagrant que te permite personalizar las opciones de montaje y tiene un gran rendimiento:

  • montaje nfs o montaje regular
  • directorio de montaje /var/www/magento/app o proyecto completo /var/www/magento

https://github.com/zepgram/magento2-fast-vm

Puede trabajar en una instalación rápida de magento y adaptar los parámetros según su práctica de trabajo y el rendimiento de su máquina host.

Por ejemplo, si su máquina host no admite la opción NFS y tiene un mal rendimiento, puede montar solo el directorio de aplicaciones, lo que es suficiente para el desarrollo.


Intenté todo y lo único que funciona es la máquina virtual que proporciona bitnami. https://bitnami.com/stack/magento/virtual-machine

En serio, no sé qué tiene esta máquina virtual, pero va muy rápido. Intenté crear mi VM usando una instalación nueva de Ubuntu, CentOS, etc. Pero no funciona tan bien como esta VM.


Intente deshabilitar la sincronización con la carpeta vagrant sync predeterminada (solo comente config.vm.synced_folder en VagrantFile y vuelva a cargar): es lento cuando se necesita trabajar con muchos archivos ...

También en el modo de desarrollador será útil para generar archivos estáticos: bin/magento setup:static-content:deploy y garantizar que todos los cachés estén habilitados: bin/magento cache:status

Si no te ayuda, puedes probar la herramienta Magento DevBox basada en Docker: http://devdocs.magento.com/guides/v2.1/install-gde/docker/docker-over.html


Para el entorno de producción:

Debe usar Redis para manejar el caché, el caché de página completa y la sesión ( http://devdocs.magento.com/guides/v2.0/config-guide/redis/config-redis.html )

Debe utilizar Varnish para el caché HTTP integrado con Magento ( http://devdocs.magento.com/guides/v2.1/config-guide/varnish/config-varnish.html )

Necesitas configurar el modo Magento de producción. ( http://devdocs.magento.com/guides/v2.1/config-guide/bootstrap/magento-modes.html )

Debe utilizar ElasticSearch para el motor de búsqueda, solo EE ( http://devdocs.magento.com/guides/v2.1/config-guide/elasticsearch/es-overview.html )

Debes usar PHP 7

Puede usar MariaDB incluso si no es compatible con Magento 2.

Debe utilizar la minificación de CSS y la minificación de JS y la agrupación de JS (que funciona solo en el modo de producción).

Consulte la documentación oficial de Magento 2 para configurar esta configuración de producción.


Si trabaja en modo desarrollador, debe deshabilitar la combinación JS / CSS, deshabilitar xdebug y habilitar opcache. Siéntase libre de ejecutar estas consultas MySQL en su base de datos dev y vaciar la caché. Esto aumentará el rendimiento del sitio en el modo de desarrollador.

UPDATE core_config_data SET value = ''0'' WHERE path = ''dev/css/merge_css_files''; UPDATE core_config_data SET value = ''0'' WHERE path = ''dev/css/minify_files''; UPDATE core_config_data SET value = ''0'' WHERE path = ''dev/js/merge_files''; UPDATE core_config_data SET value = ''0'' WHERE path = ''dev/js/minify_files''; UPDATE core_config_data SET value = ''0'' WHERE path = ''dev/js/enable_js_bundling''; UPDATE core_config_data SET value = ''0'' WHERE path = ''dev/static/sign'';


Un poco tarde aquí, pero creo que la respuesta mientras trabajaba en vagrant / docker es que la E / S de los archivos es terriblemente lenta.

Mi solución fue simplemente deshabilitar toda la carpeta compartida y reemplazarla con un proyecto remoto (conexión sftp) en PhpStorm. Todos los archivos se almacenan dentro de la máquina virtual y no tienen que sincronizarse cada vez que la página necesita una recarga.

El principal beneficio, por supuesto, es que es increíblemente rápido mientras se trabaja en el modo de desarrollador.

Pero también hay algunos problemas menores al trabajar con esta configuración:

  • No puedes ejecutar comandos directamente desde tu terminal. Tienes que ssh en tu vagrant para ejecutar los comandos cli de magento2.

  • Después de ejecutar las actualizaciones del editor, es posible que tenga que descargar la carpeta completa nuevamente, ya que en PhpStorm los cambios remotos no se descargan automáticamente.


mi receta:

  • Usa * nix como tu SO principal

  • Usa la ventana acoplable con PHP 7 y Nginx

  • usa gulp para generar css y js (más rápido que el gruñido)

  • usar redis y barniz

  • deshabilitar solo los cachés necesarios

Y el consejo más valioso: realmente necesita SSD para trabajar con magento2 si todavía está intentando desarrollar en HDD

p / s Magento 2 más complicado que Symfony / Laravel / CI (M2 está compuesto por Symfony, por cierto) y no puede ser tan rápido como los marcos puros