IE кэширует старые данные, возвращаемые с сервера
У меня есть дерево Wijmo на ASP.NET MVC View. Контрольное состояние каждого триода сохраняется в моей базе данных. Когда дерево загружается, каждый узел проверяется или не проверяется в соответствии с возвращенными данными. Когда вызывается nodeCheckChanged для дерева, я использую ajax для вызова действия на моем контроллере, которое успешно изменяет мои данные.
Проблема возникает, когда я перезагружаю дерево. Данные сохранены в базе данных, но браузер не получает последние данные с сервера.
У меня проблема только в IE всех версий. Firefox и Chrome работают каждый раз.
Я посмотрел на такие страницы от DotNetPerls, от Microsoft, и попробовал четвертый вариант ответа на этот стекопоток.
Единственный способ получить последние данные в IE - это установить параметр "Инструменты разработчика" -> "Кэш" -> "Всегда обновлять с сервера".
Что мне нужно сделать, чтобы IE перезагружал мои данные как другие браузеры?
Спасибо всем, что нашли время, чтобы прочитать этот вопрос!
редактировать
Данные для моего дерева взяты из коллекции моей модели. Эта коллекция заполняется действием.
Мои действия:
public ActionResult List(AssignedFolderListModel model)
{
//Using EntityFramework
model.TopLevelFolders = db.Folders;
return PartialView(model);
}
Моя модель:
public class AssignedFolderListModel
{
public string UserId { get; set; }
public IEnumerable<Folder> TopLevelFolders { get; set; }
public Guid[] AssignedFolderIds { get; set; }
}
Ответ
Мне нужно было добавить "cache: false" в мой вызов $.ajax. Вызов $.ajax выполняется каждый раз по одному и тому же URL. например. "AssignedFolder/ Список?UserId=12345". IE не звонил снова, а скорее возвращал кешированный результат.
Теперь IE вынужден каждый раз возвращать последние данные.
1 ответ
IE кеширует все полученное - нужно что-то сделать с запросом, чтобы обмануть IE, чтобы не кешировать его. С помощью вызова jQuery.ajax вы можете установить "cache: false" для вызова (который просто добавляет случайную метку времени к запрошенному URL-адресу). Ищите в этом дереве параметр конфигурации для этого или ловушку, которой можно манипулировать. URL-адрес, используемый для перезагрузки данных с сервера (и добавления собственной отметки времени к запрошенному URL-адресу).