Tengo un problema con una página en Internet Explorer. Tengo una llamada ajax que llama a un formulario, en otro navegador, cuando hago clic en el enlace que pasa en el controlador y carga correctamente los datos. pero en IE, cuando se carga una vez, siempre me trae los mismos resultados anteriores sin pasar el controlador.Internet Explorer Caching asp.netmvc ajax results
Respuesta
Probar:
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
Este atributo, colocado en clase de controlador, deshabilita el almacenamiento en caché. Dado que no necesito el almacenamiento en caché en mi solicitud, lo coloqué en mi clase BaseController:
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public abstract class BaseController : Controller
{
Aquí es agradable descripcion de OutputCacheAttribute: Improving Performance with Output Caching
Se puede colocar en la acción también.
Esto no debería ser el problema porque el almacenamiento en caché solo ocurre en IE –
@Malcolm Frexner: la estrategia de almacenamiento en caché difiere en los navegadores. Hay algunos problemas con IE. – LukLed
Usted podría intentar establecer la opción cache
a false
:
$.ajax({
url: '/controller/action',
type: 'GET',
cache: false,
success: function(result) {
}
});
Esta opción hará que el navegador no hagan caché de la solicitud.
ACTUALIZACIÓN:
Basado en el comentario que podría añadir una marca de tiempo único en la url para evitar problemas de almacenamiento en caché:
var d = new Date();
var myURL = 'http://myserver/controller/action?d=' +
d.getDate() +
d.getHours() +
d.getMinutes() +
d.getMilliseconds();
Bueno, estoy usando Microsoft Ajax, no jQuery. ;) Esta configuración funciona para todas las llamadas basadas en Ajax? incluso para msAjax? –
uy, lo siento, me he perdido esta parte importante de su pregunta. –
Estoy votando esto porque esta es la respuesta correcta si estás usando jQuery. De hecho, si está utilizando jQuery y no los manejadores MS Ajax en MVC, IE ignorará por completo todos los atributos que establezca en sus métodos. – James
he blogs sobre fijación de la cuestión caché de IE, tanto para jQuery y la biblioteca cliente MS:
http://yoavniran.wordpress.com/2010/04/27/ie-caching-ajax-results-how-to-fix/
Espero que esto ayude!
También encontré esto muy útil en un problema similar (pero no idéntico).
Básicamente asegurarse de que está utilizando la POST en lugar de ponerse en sus peticiones. Al hacerlo, parece evitar que el IE cachee.
Ej:
@ Ajax.ActionLink ("Borrar contactos", MVC.Home.ClearContacts(), nuevos AjaxOptions {HTTPMethod = "post", UpdateTargetId = "targetDiv"})
Puede HttpMethod = "POST"
utilizar en sus AjaxOptions
var ajaxOpts = new AjaxOptions { UpdateTargetId = "TargetDiv", HttpMethod = "POST"};
como esto exp;
@Ajax.ActionLink("Text","ActionName", new AjaxOptions { UpdateTargetId = "TargetDiv", HttpMethod = "POST"})
Si está utilizando el ayudante del Ajax, puede establecer el parámetro AllowCache
-false
así:
@Ajax.ActionLink("AjaxCall", "AjaxMethod", "DeconflictedFiles",
new { },
new AjaxOptions
{
AllowCache = false,
})
Y IE no se caché de los resultados de la llamada.
en realidad en el almacenamiento en caché del navegador IE no se borra automáticamente. pero en las secuencias de comandos de Chrome funcionan. Por lo tanto, debe intentar borrar los datos en el nivel del navegador.
- 1. Internet Explorer 7 enlaces Ajax solo cargan una vez
- 2. Llamada jQuery Ajax simple pierde memoria en Internet Explorer
- 3. Internet Explorer llamando window.onbeforeunload en window.open y llamadas AJAX
- 4. cloneNode en Internet Explorer
- 5. Internet Explorer 8 + Deflate
- 6. setTimeout Internet Explorer
- 7. Internet Explorer 9 VHD
- 8. Internet Explorer innerHeight
- 9. addEventListener en Internet Explorer
- 10. Internet Explorer toDataURL() alternativa?
- 11. Internet Explorer ignorando mis cookies
- 12. caracteres Unicode e Internet Explorer
- 13. does internet explorer admite e.preventDefault
- 14. mensaje() con Internet Explorer 8
- 15. Flot e Internet Explorer 9?
- 16. Plugin NPAPI en Internet Explorer?
- 17. Degradados en Internet Explorer 9
- 18. Internet Explorer http referer problema
- 19. Problema con JSON en Internet Explorer 7
- 20. Long Polling - Problemas con Internet Explorer 8
- 21. Depuración de sitios web en Internet Explorer
- 22. "Permiso denegado" con Internet Explorer y jQuery
- 23. Internet Explorer Internet Failure Códigos de estado HTTP
- 24. Internet Explorer 6 e Internet Explorer 7 en el mismo equipo para la depuración
- 25. Internet Explorer 8 e Internet Explorer 6 al lado del otro
- 26. ¿Dónde almacena Internet Explorer las contraseñas guardadas?
- 27. Estilo `<select>` en Internet Explorer
- 28. Post-Redirect-Get with Internet Explorer
- 29. Internet Explorer xx.yy tema página web
- 30. Recomendación del emulador de Internet Explorer 6
Posible duplicado de [Caché inesperado de AJAX resulta en IE8] (http://stackoverflow.com/questions/1013637/unexpected-caching-of-ajax-results-in-ie8) –