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.
http://technet.microsoft.com/en-us/library/cc770661(WS.10).aspx
De manera predeterminada, IIS solo almacena en caché el contenido estático; Tendrás que hacer ajustes si ya está almacenando en caché contenido no estático.
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.