Cuando estamos desarrollando nuevos sitios o probando cambios en los nuevos que implican CSS después de que se ha confirmado el nuevo código y alguien revisa los cambios, siempre ven una versión almacenada en caché del CSS anterior. Esto está causando muchos problemas en las pruebas porque las personas nunca están seguras de si tienen la última CSS en la pantalla (sé que al cambiar y hacer clic en "refresh" se borra esta caché pero no puedo esperar que los usuarios finales sepan hacer esto). ¿Cuáles son mis posibles soluciones?IIS CSS Caching
Respuesta
Si está entregando su CSS desde archivos estáticos (o cualquier cosa que la cadena de consulta no importe), intente variar eso para asegurarse de que el navegador realiza una solicitud nueva, ya que pensará que está realizando un completo recurso diferente, por lo que tiene, por ejemplo: "? styles.css token = 1234"
en la referencia de CSS en su margen de beneficio y cambiar el valor del "token" en cada CSS registro de entrada
En su entorno de desarrollo, establezca el encabezado Expires mucho más bajo. En su entorno de producción, configúrelo más alto y, a continuación, configúrelo como bajo una semana antes de realizar su lanzamiento.
no es un gran solución, pero he solucionado esto antes en el nivel de página al agregar una cadena de consulta al final de la llamada al archivo CSS:
<link href="/css/global.css?id=3939" type="text/css" rel="stylesheet" />
Luego aleatorizaría el valor de id para que siempre cargue un valor diferente en la carga de la página. Luego sacaría este código antes de pasar a la producción. Supongo que también podría extraer el valor de un archivo de configuración, de modo que solo tenga que cargarse una vez por confirmación.
(un poco más de detalle) respuestas similares dadas para la versión de JavaScript de esta pregunta, que tiene el mismo problema/solución
- 1. Caching Typekit CSS
- 2. ConfigurationManager.AppSettings Caching
- 3. raíles 3.1 canalización de activos css caching en desarrollo
- 4. htaccess caching no funciona
- 5. Caching Solutions
- 6. Windsor Interceptors AOP & Caching
- 7. Java Tomcat enable caching
- 8. PHP PDO Caching
- 9. .NET 4 Caching Support
- 10. Node.js/Express Caching
- 11. jquery/javascript caching question
- 12. Autorización y ASP.NET MVC Caching
- 13. Optimistic Caching Concurrency Design Patrón
- 14. ASP.NET Web.Config ConfigurationManager.AppSettings File Caching
- 15. Cómo probar los raíles ETag caching?
- 16. ADO.NET Entity Framework ObjectContext - Caching Question
- 17. atributos "Caching" de clases en Python
- 18. Rails Caching DB Consultas y mejores prácticas
- 19. PHP5 Frameworks: Autoloading y Opcode Caching
- 20. Rails 3.1 y Http Page Caching
- 21. EntityTag - Value, Caching, Comparison - cómo en Jersey
- 22. Internet Explorer Caching asp.netmvc ajax results
- 23. IIS 7.5 no hay imágenes css js que muestran
- 24. IIS url reescritura - css y js incorrectamente reescritos
- 25. Carril de activos de Rails 3.1.1 Heroku caching gotcha
- 26. ¿Por qué Django Caching my static con django.views.static.serve?
- 27. Samsung TV Video Caching usando HTML5 y JS
- 28. HTML5 Offline Manifest Stop Caching Página Se declara en
- 29. Asp.net - Caching vs Static Variable para almacenar un Dictionary
- 30. IIS 7.5 e imágenes que no se almacenan en caché
Ya utilizo un método estático para agregar css de páginas por lo que añade una marca de tiempo de la construcción de la cadena de consulta funciona de maravilla, gracias. – Greg
Aunque esta solución funcionará, no es práctico para sitios web grandes que pueden tener cientos de referencias a archivos .css y .js. – Karlth
@ user357320, le remito a las líneas 21 y 22 de esta misma página que, según algunas definiciones, es un "sitio web grande". Afortunadamente es un sitio web bien estructurado y diseñado, por lo que no tiene cientos de referencias con las que lidiar. – Rob