2009-05-07 15 views
14

Tengo un sitio web asp.net que utiliza paneles de actualización en la página que no puedo volver a cargar desde el servidor. Tengo esto para la memoria caché de página de inhabilitación en la página maestra.Deshabilitar la memoria caché de página para forzar la carga de la página con el botón Atrás del navegador

 Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1)) 
    Response.Cache.SetValidUntilExpires(False) 
    Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches) 
    Response.Cache.SetCacheability(HttpCacheability.NoCache) 
    Response.Cache.SetNoStore() 

Cuando hago clic en el botón Atrás del navegador para volver a la página, dice que la página ha caducado. Las otras páginas de mi sitio web funcionan y llaman a la carga de la página, la única solución que encontré pero que no puedo usar es copiar toda la página en un panel de actualización, pero no puedo hacer esto porque tengo un visor de informes en la página que no funciona con ajax. Si alguien puede ayudar, lo agradecería profundamente.

+1

El mensaje de página caducado del navegador significa que se han enviado algunos datos de devolución de datos. Algunos buscadores preguntan al usuario, si quieren volver a enviarlo, algunos no preguntan. – jor

Respuesta

0

Sólo tiene que añadir esto en su archivo de vista en la parte de cabecera:

<head> 
<script language="JavaScript"> 
<!-- 
javascript:window.history.forward(1); 
//--> 
</script> 
</head> 

Dentro de la etiqueta del cuerpo añadir lo siguiente:

<body onUnload="OperaReload()"> 
<input type="hidden" id="refreshed" value="no"> 
0

para recargar la página con JavaScript utilice la siguiente:

window.location.replace(window.location.pathname); 
1

Esto no es un problema de caché del navegador; es uno de devolución. Debe implementar el patrón Publicar/Redireccionar/Obtener para evitar el mensaje "¿Desea enviar de nuevo?/Página expiró".

http://en.wikipedia.org/wiki/Post/Redirect/Get

El ejemplo clásico de esto es cuando una página web tiene un botón de guardar que insertar algo en una base de datos. Se hace clic en el botón "Guardar" -> se produce una devolución de datos -> código inserta una fila en una tabla -> usuario refresca la página (F5) -> la devolución de datos ocurre nuevamente -> el código inserta la misma fila nuevamente.

Para evitar la inserción doble en el ejemplo anterior, debe redirigir cuando se presiona el botón "Guardar" y solo entonces, ejecutar la inserción.

Cuestiones relacionadas