2008-09-22 14 views
11

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

9

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

+0

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

+0

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

+0

@ 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

5

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.

2

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.