enable disablecache disable control clientcache cachecontrolmode cachecontrolmaxage cache asp.net iis caching http-headers

asp.net - disablecache - iis cache control



IIS7: establece "no-caché" para todas las páginas aspx pero no para imágenes/css/js (3)

Me gustaría no almacenar en caché mis páginas aspx en ninguna parte. Por alguna razón, IE ignora las metaetiquetas que se configuran desde mi página maestra

<meta http-equiv="Expires" CONTENT="0"> <meta http-equiv="Cache-Control" CONTENT="no-cache"> <meta http-equiv="Pragma" CONTENT="no-cache">

Estoy tratando de ver si puedo configurar mi encabezado de respuesta HTTP en "Cache-Control" - "no-cache". Configurando algo como

HttpContext.Current.Response.Headers.Add("Cache-Control", "no-cache"); HttpContext.Current.Response.Headers.Add("Exipres", DateTime.Now.AddDays(-1).ToShortDateString());

en cada página sería doloroso. Estoy pensando si hay alguna manera de configurar esto en IIS7 (agregue este encabezado a las páginas aspx, pero no a las imágenes / css / js). Es posible ?

Editar: según la sugerencia en http://technet.microsoft.com/en-us/library/cc753133%28WS.10%29.aspx , agregar un encabezado de respuesta http personalizado agrega el encabezado a todos los archivos, incluidos js, css, imágenes . Así que agregar "Cache-Control", "no-cache" aquí tampoco funcionaba

Edit2: estoy pensando en agregar un httpmodule. Algo similar a http://blogs.technet.com/stefan_gossner/archive/2008/03/12/iis-7-how-to-send-a-custom-server-http-header.aspx . Alguna sugerencia ?


Una forma absolutamente definida de evitar que cualquier navegador guarde en caché su página sería agregar una variable de cadena de consulta establecida en un número aleatorio, de modo que sus enlaces siempre terminarían en "? Ran =". Lo hice de manera limitada en el pasado.



Si está utilizando una página maestra para su sitio, le recomendamos que agregue el siguiente encabezado de respuesta a su evento Page_Load:

protected void Page_Load(object sender, EventArgs e) { Response.AddHeader("Cache-Control", "no-cache, no-store, max-age=0, must-revalidate"); }

Como los archivos .js no usarán la página maestra, el navegador debe guardar la referencia a su caché.

El ejemplo anterior es el que uso y funciona bien en Firefox3, IE7 y Chrome7. Tenga en cuenta que el encabezado de respuesta anterior es lo único que agregué para el control de caché y hace el trabajo. Sin embargo, a menudo veo Pragma y Expires encabezados de respuesta en otros sitios web.

Por ejemplo, aquí están los encabezados de respuesta que se usan en Gmail:

Content-Type: text / html; charset = UTF-8
Cache-Control: no-cache, no-store, max-age = 0, debe-revalidar
Pragma: no-caché
Vence: vie, 01 ene 1990 00:00:00 GMT
Fecha: martes, 02 de noviembre de 2010 16:38:15 GMT
x-dns-prefetch-control: desactivado
Content-Encoding: gzip
Transferencia de codificación: fragmentada
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; modo = bloque
Servidor: GSEServer: GSE

No estoy seguro de si se usan para navegadores antiguos u otros navegadores más nuevos.

Prefiero implementar la cantidad mínima de código para resolver un problema y nunca (todavía) tuve un caso donde el Response.AddHeader anotado en la parte superior no era suficiente.