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 llamando window.onbeforeunload en window.open y llamadas AJAX
- 2. Internet Explorer 7 enlaces Ajax solo cargan una vez
- 3. Llamada jQuery Ajax simple pierde memoria en Internet Explorer
- 4. Internet Explorer innerHeight
- 5. setTimeout Internet Explorer
- 6. Internet Explorer 9 VHD
- 7. Internet Explorer toDataURL() alternativa?
- 8. Internet Explorer 8 + Deflate
- 9. cloneNode en Internet Explorer
- 10. addEventListener en Internet Explorer
- 11. Flot e Internet Explorer 9?
- 12. Internet Explorer ignorando mis cookies
- 13. caracteres Unicode e Internet Explorer
- 14. Internet Explorer http referer problema
- 15. Degradados en Internet Explorer 9
- 16. Plugin NPAPI en Internet Explorer?
- 17. does internet explorer admite e.preventDefault
- 18. mensaje() con Internet Explorer 8
- 19. Problema con JSON en Internet Explorer 7
- 20. Depuración de sitios web en Internet Explorer
- 21. Long Polling - Problemas con Internet Explorer 8
- 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. Crear una extensión/complemento de Internet Explorer?
- 27. Diseñando una hora para Internet Explorer
- 28. ¿Dónde almacena Internet Explorer las contraseñas guardadas?
- 29. Gradiente de colores en Internet Explorer
- 30. Internet Explorer ignora Hashtag en la URL
Posible duplicado de [Caché inesperado de AJAX resulta en IE8] (http://stackoverflow.com/questions/1013637/unexpected-caching-of-ajax-results-in-ie8) –