У меня проблема со страницей в Internet explorer. У меня есть вызов ajax, который вызывает форму в другом браузере, когда я нажимаю ссылку, которую он передает в контроллере, и загружает правильные данные. но в IE, когда он загружается один раз, он всегда приносит мне те же старые результаты, не проходя в контроллере.
Кэширование Internet Explorer asp.netmvc ajax results
Ответ 1
Try:
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
Этот атрибут, помещенный в класс контроллера, отключает кеширование. Поскольку я не нуждаюсь в кешировании в своем приложении, я поместил его в свой класс BaseController:
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public abstract class BaseController : Controller
{
Вот хорошее описание OutputCacheAttribute: Повышение производительности с кэшем вывода
Вы также можете поместить его в действие.
Ответ 2
Вы можете попробовать установить cache
вариант false
:
$.ajax({
url: '/controller/action',
type: 'GET',
cache: false,
success: function(result) {
}
});
Эта опция заставит браузер не кэшировать запрос.
UPDATE:
На основе комментария вы можете добавить уникальную метку времени в URL-адрес, чтобы избежать проблем с кешированием:
var d = new Date();
var myURL = 'http://myserver/controller/action?d=' +
d.getDate() +
d.getHours() +
d.getMinutes() +
d.getMilliseconds();
Ответ 3
Вы можете использовать HttpMethod = "POST"
на своем AjaxOptions
var ajaxOpts = new AjaxOptions { UpdateTargetId = "TargetDiv", HttpMethod = "POST"};
как этот exp;
@Ajax.ActionLink("Text","ActionName", new AjaxOptions { UpdateTargetId = "TargetDiv", HttpMethod = "POST"})
Ответ 4
Я написал о том, как исправить проблему кеша IE для jQuery и клиентской библиотеки MS:
http://yoavniran.wordpress.com/2010/04/27/ie-caching-ajax-results-how-to-fix/
Надеюсь, это поможет!
Ответ 5
Я также нашел это очень полезным при аналогичной (но не идентичной) проблеме.
В основном убедитесь, что вы используете POST, а не GET в своих запросах. Это мешает IE кэшировать.
Например:
@Ajax.ActionLink( "Очистить контакты", MVC.Home.ClearContacts(), новые AjaxOptions {HttpMethod = "POST", UpdateTargetId = "targetDiv" })
Ответ 6
Если вы используете помощник Ajax, вы можете установить для параметра AllowCache
значение false
следующим образом:
@Ajax.ActionLink("AjaxCall", "AjaxMethod", "DeconflictedFiles",
new { },
new AjaxOptions
{
AllowCache = false,
})
И IE не будет кэшировать результаты вызова.
Ответ 7
на самом деле кэширование браузера IE нечеткое. но в хромовых сценариях, которые были приняты. Вам нужно попробовать очистка данных на уровне браузера.