Estoy trabajando en una aplicación web JSF. Cada vez que cambio archivos CSS y despliegue el programa por primera vez, los cambios en los archivos CSS no se reflejan. Lo probé en diferentes situaciones. ¿Cómo es esto causado y cómo puedo resolverlo?Los cambios en los archivos CSS no se reflejan después de la implementación
Respuesta
sí cuando se presiona Ctrl + F5 se carga
Entonces, sólo se ha servido de la caché del navegador. Eso está perfectamente bien. Ahorra ancho de banda de red en un entorno de producción real. Pero puedo imaginar que esto es perturbador durante el desarrollo o cada vez que traes actualizaciones a la producción. Durante el desarrollo, solo aprendería a acostumbrarme a la tecla Ctrl + F5. Pero para la producción realmente le gustaría resolverlo ya que el usuario final puede no estar al tanto de ese "truco".
Un enfoque común es agregar un número de versión como parámetro de solicitud al recurso CSS.
<link rel="stylesheet" href="style.css?v=1.0" />
Cada vez cuando se haga importantes cambios en el CSS, entonces que le gustaría incrementar el número de versión antes de traer a la actualización en producción.
<link rel="stylesheet" href="style.css?v=1.1" />
Esto obligará al navegador a volver a cargar la hoja de estilo.
Otro enfoque es utilizar el tiempo de inicio del servidor para esto. Como está utilizando JSF, esto podría hacerse fácilmente con un java.util.Date
declarado como un bean administrado con ámbito de aplicación en faces-config.xml
.
<managed-bean>
<description>Startup date</description>
<managed-bean-name>startup</managed-bean-name>
<managed-bean-class>java.util.Date</managed-bean-class>
<managed-bean-scope>application</managed-bean-scope>
</managed-bean>
continuación, puede utilizar Date#getTime()
para obtener la marca de tiempo:
<link rel="stylesheet" href="style.css?#{startup.time}" />
Esto se generará en el HTML como:
<link rel="stylesheet" href="style.css?1314105929937" />
Se va a cambiar cada vez que se reinicia el servidor o vuelva a implementar la aplicación web, por lo que el navegador se verá obligado a volver a cargar el recurso (¡incluso cuando no se haya cambiado!) tenga esto en cuenta si el almacenamiento en caché y el uso del ancho de banda es una preocupación norte). La misma técnica es aplicable a otros recursos estáticos como JavaScripts e imágenes.
Cuando ya está en JSF 2.x, puede usar la función integrada "versionamiento de la biblioteca de recursos" para eso. Véase también What is the JSF resource library for and how should it be used?
muchas gracias por su solución – qazal
+1 un truco útil, gracias BalusC. Tal vez debería compilar sus respuestas en un libro (si debe tener algo de tiempo libre). Lo compraría :) – kostja
Buena idea, pero ¿hay alguna posibilidad de combinar esto con la forma JSF de incluir archivos CSS, es decir, con '
Tuve los mismos problemas al cambiar los archivos css y necesitaba actualizar el sitio, era bastante molesto y muy incoveniente.
Eventualmente me encontré con esta pequeña "herramienta", un archivo javascript, que necesita implementar en su proyecto. A partir de ese momento ya no necesita actualizar el sitio, solo necesita guardar su archivo css, y los cambios se adoptarán automáticamente después de 2,3 segundos.
Aquí está el enlace: http://cssrefresh.frebsite.nl/
Por cierto, truco muy útil desde BalusC, como siempre;)
Traté de usar la forma en que dijiste pero no funciona para mí. Descargué el archivo js y lo puse en mi proyecto pero no tiene efecto :( – Aditzu
- 1. Cambios CSS que no se reflejan en el sitio
- 2. Los cambios guardados de un NSManagedObjectContext no se reflejan en el NSManagedObjectContext principal
- 3. rieles 3.2 y modificaciones en el archivo css que no se reflejan hasta los activos: precompilación
- 4. contenido de la página html cambiado por jQuery, pero "Ver código fuente" no reflejan los cambios
- 5. ¿Por qué los cambios de precios en iTunes Connect no se reflejan en la tienda de aplicaciones?
- 6. Branch después de hacer los cambios?
- 7. no puedo confirmar los cambios después de fusionarse en SVN
- 8. Los cambios en el archivo de propiedades no se reflejan a menos que reinicie el servidor de Glassfish
- 9. VS 2010 no abre los archivos CSS
- 10. En forzosa, ¿cómo elimino los cambios pendientes para los archivos NUEVOS/AÑADIDOS que no se enviaron?
- 11. "git filter-branch" utilizado con éxito para cambiar committer/autor, pero los cambios no reflejan en github
- 12. nodemon - reiniciar en los cambios en los archivos json
- 13. ¿Subversion no fusiona los cambios en archivos renombrados?
- 14. ¿Cómo se relacionan los cambios de la rama actual con los cambios que se fusionan?
- 15. No se presionan los cambios cuando se usa hg-git
- 16. Usando gruntjs, ¿cómo observar los cambios en los archivos .coffee?
- 17. La cartera de activos está rota: No se compila en los archivos fly css y js
- 18. El widget no se actualiza después de los cambios de configuración
- 19. ¿Reiniciar todo lo necesario después de los cambios en freetds.conf?
- 20. Javascript establecer CSS: después de los estilos
- 21. Reiniciar httpd después de los cambios en el httpd.conf
- 22. monitoreo de cambios en los archivos en tiempo real
- 23. Proyecto de implementación web - Copiar archivos después de la compilación
- 24. Los gráficos no se actualizan automáticamente cuando los cambios de datos
- 25. Mercurial: ¿Cómo se pueden deshacer los cambios?
- 26. "git add * .js" no agregó los archivos en los subdirectorios
- 27. ¿Por qué git no intenta combinar los cambios en los archivos renombrados?
- 28. ¿Qué cambios de código se reflejan automáticamente en eclipse en modo de depuración?
- 29. plantillas de Django no puede ver los archivos CSS
- 30. ¿Cómo se supervisa el acceso a los archivos y los cambios en un servidor de archivos por nombre de usuario?
Para excluir a uno y otro, lo que se carga cuando se pulsa Ctrl + F5 en el navegador? – BalusC
sí cuando presiono Ctrl + F5 se carga – qazal
sí cuando presiono Ctrl + F5 se carga. de esta manera, el último CSS permanece en efectivo del navegador. ¿Cómo puedo resolver este problema con el cobro? – qazal