2010-12-23 9 views
7

La hoja de estilo en la carpeta App_Theme se almacena en caché en el navegador. ¿Cuál debería ser el enfoque? de modo que cada vez que haya una nueva implementación, el navegador debería tomar las hojas de estilo más recientes y no las que están en la memoria caché del navegador.CSS en la carpeta App_Theme se almacena en caché en el navegador

esto ocurría por otra css (que no están en la carpeta de temas) control personalizado también, así usada como se menciona en el enlace

http://blog.sallarp.com/asp-net-automatic-css-javascript-versioning/

¿Cómo se podría hacer para la CSS en la carpeta del tema ?

Editar: El nombre del tema se menciona en el archivo web.config como se menciona a continuación. así que no es solo la etiqueta de enlace html que he resuelto al usar el método mencionado en el enlace.

<pages styleSheetTheme="Default"> 
     <controls> 

     </controls> 
    </pages> 

Respuesta

4

yo también he encontrado con esto y la solución que se me ocurrió es añadir una versión a su CSS nombre de archivo, no es bonita, pero sin deshabilitar la memoria caché en IIS no podría pensar de otra manera.

Cambie el nombre del archivo CSS que decir mycss-V1.0.css, lo que obligará a sus navegadores web del usuario para recargar la CSS

0

puede ser enviar la marca de tiempo como un parámetro de obtener la mayor bien.

EG:

http://mysite.com/theme/dir/style.css?id=24033957203712

donde 24033957203712 es la marca de tiempo.

+0

esto es para el CSS que se encuentra dentro de la carpeta app_theme. el nombre del tema solo se menciona en el web.config. – dhinesh

+0

@dhinesh Podría necesitar más información para encontrar una respuesta correcta – nivanka

+0

He editado la pregunta. – dhinesh

4

Al implementar la aplicación web, incluya el número de versión en la ruta de temas. Por ejemplo, App_Themes/Default/v1.2.0.4321/, donde v1.2.0.4321 es la carpeta agregada en el despliegue para la versión 1.2.0.4321. Esto conserva el nombre del tema (por ejemplo, "Predeterminado") y los nombres de los archivos, lo que hace que el control del código fuente y las referencias de ruta sean mucho más fáciles. ASP.NET carga todos los archivos CSS en la carpeta del tema actual, independientemente de las subcarpetas. Esto no solo resuelve el problema al hacer referencia a los archivos CSS, sino a las imágenes a las que se hace referencia desde dentro de los archivos CSS (por ejemplo, background-image).

Además, la duración de la caché del navegador para App_Themes puede ser aumentado para mejorar el rendimiento al tiempo que garantiza que la próxima vez que la aplicación web se actualiza, todos los archivos del tema será actualizado.

Agregue esto a la sección <configuration> de Web.Config para tener la memoria caché de los navegadores durante 120 días.

<location path="App_Themes"> 
    <system.webServer> 
     <staticContent> 
      <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="120.00:00:00" /> 
     </staticContent> 
    </system.webServer> 
</location> 
0

El caché del navegador se basa en el tiempo de caducidad establecido en el encabezado de respuesta o la configuración del navegador.

Hay temporización cuando estamos desplegando CSS y deseamos empujarlos al usuario inmediatamente, pero son incapaces de versión del archivo CSS según referencia del archivo ASP (como style.css?v2).

En estos casos, podemos agregar las clases de estilo nuevas/modificadas solo en el archivo CSS particular a la sección Head del archivo aspx. No creará anulaciones de estilo y solucionará el problema.

Cuestiones relacionadas