2012-01-18 10 views
13

me seguido la guía en la parte inferior de este artículo: http://symfony.com/doc/current/cookbook/assetic/asset_management.html¿Cómo hacer que la compilación de activos Symfony 2 produzca diferentes nombres de archivo?

tengo este código:

{% javascripts 
     ... 

     output='js/dist/dist.js' 
    %} 
    <script src="{{ asset_url }}"></script> 
    {% endjavascripts %} 

Ahora si me quedo sf assetic:dump --env=prod se crea el archivo compilado correctamente. Sin embargo, me gustaría tenerlo generando un nombre aleatorio (o timestamped) para evitar el problema de la caché del navegador del lado del cliente. Ahora mismo crea siempre el archivo dist.js que se almacena en caché y cuando actualizo mi código, los usuarios no notarán la diferencia (u obtendrán errores).

¿Hay alguna manera de hacerlo como dist12345678.js?

Respuesta

7

Usted tiene dos opciones: o bien dejar de lado el nombre de archivo de salida (que será entonces un hash autogenerado que cambia) o utilizar versiones de activos, como se describe en la documentación de Symfony: http://symfony.com/doc/current/reference/configuration/framework.html#ref-framework-assets-version

+0

No parece tener ningún efecto. Borré el caché y ejecuté 'assetic: dump --env = prod' e intenté con el entorno prod y no veo ningún'? V0.0.1' allí. – Tower

+1

rFactor, ejecutar "caché: borrar --env = prod –

+5

Dejar fuera el nombre del archivo de salida no funciona, siempre generó el mismo nombre como" 8662e4b.js ". La versión del activo funciona bien. –

3

que he estado haciendo una Mucho de experimentar con Assetic para un proyecto, y me topé con una manera de hacer exactamente lo que estás preguntando. Si la cadena de "salida" contiene "*", se sustituye por una cadena arbitraria generada derméticamente.

Por ejemplo, tengo el siguiente en una plantilla (PHP, no estamos utilizando ramita):

<?php foreach($view['assetic']->javascripts(array('@MyBundle/Resources/public/js/page.js'), array(), array('output' => 'js/compiled/page_*.js')) as $url): ?> 
    <script type="text/javascript" src="<?php echo $view->escape($url) ?>"></script> 
<?php endforeach; ?> 

<?php foreach($view['assetic']->stylesheets(array('@MyBundle/Resources/public/css/page.css'), array(), array('output' => 'css/compiled/page_*.css')) as $url): ?> 
    <link rel="stylesheet" href="<?php echo $view->escape($url) ?>" /> 
<?php endforeach; ?> 

Cuando corro app/Assetic consola: volcado, genera/web/css/compilado /page_8e8fcb3.css y /web/js/compiled/page_241b4e5.js.

+0

Intenté colocar un asterisco, pero parece que se elimina y no se reemplaza por una cadena aleatoria. ¿Esto es parte de Assetic o lo hiciste? hacer algo por su cuenta? – Tower

+0

No he hecho nada por mi cuenta, y mi código es exactamente como se muestra arriba, excepto por el nombre de mi paquete. ¿Es posible que se pierda algo al compilar su plantilla twig para php? no puedo imaginar por qué sería ese el caso, pero no se me ocurre nada que explique por qué el asterisco se trata de manera diferente en mi sistema que en el suyo. – AmericanUmlaut

+0

Puede ser una versión diferente. ¿Cuál es el suyo? Activo ¿versión ic? – Tower

Cuestiones relacionadas