2012-05-25 8 views
9

Estoy buscando maneras de facilitar el desarrollo de Symfony 2 Assetic 1.0.2. Uso Assetic para descargar/publicar mis activos.Haciendo Symfony 2 Desarrollo activo cómodo

Actualmente sigo corriendo este comando en el fondo:

php app/console assetic:dump --watch 

ayuda mucho, cada cambio que haga a JS o archivos CSS conseguirá automáticamente descargado en el directorio público donde los recursos se obtienen de por el navegador.

Sin embargo, no tengo problemas con esto:

  1. Si agrego un nuevo archivo CSS/JS, por alguna razón que no consigue descargó. Necesito detener el reloj, borrar el caché e iniciar nuevamente el reloj.

  2. Es un poco lento, come el 5% -20% de tiempo de CPU constantemente.

¿Hay alguna alternativa al desarrollo con Assetic? Ya probé el enfoque de servir los recursos a través de un controlador (use_controller: true para Assetic), pero fue incluso más lento (porque seamos realistas, PHP no es para servir datos estáticos).

Respuesta

4

Para mí, esta es la forma más rápida de desarrollar con Assetic que pude encontrar. Intenté e intenté encontrar un mejor flujo de trabajo para mejorar la velocidad de generación de activos, pero no encontré ninguno.

Hay algunos trabajos en la rama principal de Symfony2 en un componente ResourceWatcher que posiblemente podría ayuda en este tema por:

  1. Acelerar el proceso de observación, apoyándose en vigilante recurso nativo como inotify
  2. Fijación problema cuando se agregan/eliminan recursos para que se descarguen correctamente.

Puede ver el progreso en el componente en este PR.

Espero que alguien proporcione algunos trucos para acelerar el desarrollo con un flujo de trabajo totalmente diferente o un flujo de trabajo muy diferente.

Saludos,
Matt

1

en uso Developpement esto:

php app/console assets:install web --symlink 
+1

Lo he usado, pero todavía busca los archivos fuente lentamente, supongo que necesitaría especificar rutas a '/ bundles/js/...' para que funcione, lo cual no es ideal para producción, sin embargo. – Tower

+7

assets: install y assetic: dump son dos cosas completamente diferentes – calumbrodie

3

Para lentitud, puede ejecutar con --no-debug y --forks=4. Instale la dependencia de Spork a través del compositor, y ejecute app/console assetic:dump --no-debug --forks=4.

Si tiene más núcleos, agregue más horquillas. Si desea mantener los núcleos libres, baje el número. No estoy seguro de por qué no es 4 veces más rápido, sin duda no es demasiado inteligente para asignar trabajos diferentes a diferentes núcleos, pero es un comienzo.

Algunas cosas que acabo trataron brevemente:

time app/console assetic:dump 

real 1m53.511s 
user 0m52.874s 
sys  0m4.989s 

time app/console assetic:dump --forks=4 

real 1m14.272s 
user 1m12.716s 
sys  0m5.752s 

time app/console assetic:dump --forks=4 --no-debug 

real 1m9.569s 
user 1m6.948s 
sys  0m5.844s 

No estoy seguro de que esto va a ayudar con --watch, como --watch consume un núcleo entera por sí mismo, porque while (true) en PHP.

1
  1. Configure diferentes filtros para el desarrollo y la producción. En producción, quiere que su JS y CSS sean minificados y uglificados, pero esto es una pérdida de tiempo durante el desarrollo.

  2. Asegúrese de que assetic.debug sea falso. Esto garantizará que sus archivos JS y CSS estén concatenados, de modo que todos los JS y CSS se puedan recuperar en una sola solicitud HTTP.

  3. Si está utilizando el controlador (assetic.use_controller es cierto) y que tiene caja de herramientas de desarrollador del navegador abierta, asegúrese de desmarque la casilla de verificación “caché Disable” (en Chrome, la casilla de verificación está en el panel Red, en Firefox está en el panel de configuraciones). Esto permitirá que su navegador envíe solicitudes If-Modified-Since: si los archivos no han cambiado en el servidor, el servidor devolverá 304 Not modified sin recompilar sus activos, y el navegador utilizará la última versión de la memoria caché del navegador.

  4. No utilice Assetic para cargar archivos desde CDN. Descargue los archivos a su servidor (manualmente, usando Bower, o lo que sea), o cárguelos desde el CDN agregando <script src=…> o <link rel=stylesheet href=…> directamente en su plantilla HTML.

+0

Extraño, aunque el servidor da 304, envía la carga de todos modos en mi caso. – hbogert