sitio publicar para net internet instalar habilitar desde crear configurar cache asp aplicacion acceder asp.net angularjs caching iis single-page-application

asp.net - publicar - ¿Cómo deshabilitar el almacenamiento en caché del archivo HTML de la aplicación de una sola página servido a través de IIS?



publicar sitio web en iis (4)

Tengo una aplicación de una sola página (angular-js) que se sirve a través de IIS. ¿Cómo evito el almacenamiento en caché de archivos HTML? La solución debe lograrse cambiando el contenido dentro de index.html o web.config, ya que el acceso a IIS a través de una consola de administración no es posible.

Algunas de las opciones que estoy investigando actualmente son:

IIS es la versión 7.5 con .NET framework 4


Agregando lo siguiente en la solución web.config funcionó en Chrome, IE, Firefox y Safari:

<?xml version="1.0" encoding="UTF-8"?> <configuration> <location path="index.html"> <system.webServer> <httpProtocol> <customHeaders> <add name="Cache-Control" value="no-cache" /> </customHeaders> </httpProtocol> </system.webServer> </location> </configuration>

Esto asegurará que el encabezado de Cache-Control se establezca en no-cache al solicitar index.html .


Al servir sus archivos html, puede agregar una cadena de consulta aleatoria. Esto evitará que el navegador use las versiones anteriores, incluso si el archivo está en el caché del navegador.

/index.html?rnd=timestamp

La otra opción es agregar la configuración de no caché en el nivel de IIS. Esto agrega Cache-Control: no-cache en la respuesta que le dice a los navegadores que no guarden el archivo. Funciona desde IIS 7 en adelante.

<?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- Note the use of the ''location'' tag to specify which folder this applies to--> <location path="index.html"> <system.webServer> <staticContent> <clientCache cacheControlMode="DisableCache" /> </staticContent> </system.webServer> </location> </configuration>


Para .NET Core, utilicé lo siguiente.

app.UseStaticFiles(new StaticFileOptions { OnPrepareResponse = context => { if (context.File.Name == "index.html" ) { context.Context.Response.Headers.Add("Cache-Control", "no-cache, no-store"); context.Context.Response.Headers.Add("Expires", "-1"); } } });

Crédito a ¿Cómo deshabilitar el caché del navegador en ASP.NET core rc2?


<meta http-equiv="cache-control" content="no-cache, must-revalidate, post-check=0, pre-check=0">