2010-01-07 9 views
6

Me gustaría no almacenar en caché mis páginas aspx en ninguna parte. Por alguna razón IE ignora las etiquetas meta que se establecen de mi página maestraIIS7: establezca "no-caché" para todas las páginas aspx pero no para images/css/js

<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 cabecera de respuesta HTTP para "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 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 incluyendo js, ​​css, images. Entonces agregar "Cache-Control", "no-cache" aquí no 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 ?

Respuesta

3

http://technet.microsoft.com/en-us/library/cc770661(WS.10).aspx

Por defecto sólo IIS almacena contenido estático; Tendrás que hacer ajustes si ya está almacenando en caché contenido no estático.

+0

No quiero que almacene en caché aspx, pero quiero que guarde en caché (en el lado del cliente) imágenes, css y js. Quiero agregar un encabezado de respuesta en IIS a * no * cache aspx, pero a caché de imágenes, js, css – ram

+0

IIS no almacena en caché aspx de manera predeterminada, eso es lo que estaba diciendo. Si ES el almacenamiento en caché de páginas aspx, deberá verificar la misma configuración para asegurarse de que el almacenamiento en caché esté desactivado para las páginas dinámicas. – jvenema

1

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

2

Si está utilizando un MasterPage para su sitio, es posible que desee considerar la adición de la siguiente cabecera de la 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"); 
} 

Desde su archivo (s) Js no utilizará el MasterPage, 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í es los encabezados de respuesta que se utilizan en Gmail:

Content-Type: text/html; charset = UTF-8
Cache-Control: no-cache, no-store, max-age = 0, hay que revalidar
Pragma: no-cache
Expira: Vie, 01 de Ene de 1990 00:00:00 GMT

Fecha: mar, 02 Nov 2010 16:38:15 GMT
-dns-captación previa de control de x: off
Content-Encoding: gzip
Transfer-Encoding: fragmentada
X-Content-Tipo- Opciones: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode = bloque
Servidor: GSEServer: GSE

no estoy seguro de si los que se utilizan para los navegadores antiguos y/o en otros navegadores más recientes.

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

Cuestiones relacionadas