Estimados.
Tengo una aplicación en Symfony 2.1 que funciona en una red interna. Se le realizo un actualización de la interface. El problema es que los navegadores tienen en la cache la altigua version, causando que se vea en algunos casos una unión de ambos estilos.
Habrá una forma obligar que se limpie la cache del navegador.
Ahora estoy utilizando esto para que se vea correctamente, pero causa algunos problemas como que algunos momento la pantalla quede en blanco un par de segundos.
<script type="text/javascript"> window.onload = function() { if(!window.location.hash) { window.location = window.location + '#cchh'; window.location.reload(); } } </script>
Me podrían orientar.
Respuestas
Symfony incluye la solución a este problema desde su versión 2.0, así que podrás utilizarlo en tu proyecto. La idea es usar la opción de configuración assets_version
tal y como se explica en este artículo.
Básicamente la idea es que Symfony añade el número de versión a los archivos CSS y JavaScript (e.g. /css/estilos.css?version=1
). Cuando actualizas la interfaz de la aplicación, cambias el valor de la opción assets_version
y así Symfony ahora enlazará por ejemplo a /css/estilos.css?version=2
Como la URL es diferente, el navegador no lo tiene en la caché y todo funciona bien a la primera sin tener que hacer ninguna cosa rara.
@javiereguiluz
Gracias.
¿Esto afecta solo a los archivos?
y
¿Qué pasa con los CSS o JS que están directo en las plantillas?
@dariongg
No entiendo muy bien tu último comentario. Pero el valor de assets_version
se aplica a cualquier asset que se enlace con la función asset()
de Twig, por lo que se puede utilizar para archivos CSS, JavaScript, fuentes web, imágenes, etc.
@javiereguiluz