Я показываю таблицу на основе запроса из базы данных. Запрос ajax используется для получения данных из таблицы, сериализации в json и с использованием библиотеки JavaScript-данных datatables на передней панели, данные обновляются.Кэширование в MVC .NET
У меня есть требование, чтобы иметь возможность выводить эту таблицу в Excel. Это должно быть в очень специфическом формате, для которого я написал класс и т. Д. Для C#, который правильно работает. У меня также есть контроллер, который затем передаст поток, чтобы пользователь мог загрузить файл.
Мой вопрос связан с кэшированием данных из базы данных. Я не хочу возвращаться в базу данных и повторно запускать запрос, а затем передавать моему экспектору exporter отчет, он должен быть каким-то образом сохранен - последний отчет, который пользователь выполнил.
Есть два способа я могу думать делать это:
1) кэширования клиента - хранить последний отчет, которым управляет пользователем и тогда экспортер первенствует использовать последние данные отчета из кэша.
2) отправьте обратно последний ответ json от вызова Ajax и десериализуйте контроллер обратно в объект отчета.
Номер один кажется наиболее логичным, поскольку два кажутся беспорядочными и склонными к ошибке. Я хотел бы знать, если это лучшее решение, и если бы не предложение о том, какой метод будет лучше.
Я бы начал с [OutputCacheAttribute] (http://stackoverflow.com/a/342761/2030565) в действии вашего контроллера. – Jasen
@ Jasen Спасибо, я все еще немного смущен этим. Этот метод кэширования, похоже, просто кэширует конкретный контроллер, но я не очень забочусь об этом контроллере, потому что он вызван через ajax и возвращает JSON. Я хочу, чтобы объект, возвращенный базой данных и службой (список объекта отчета), находился в кеше, что все еще возможно? –
Он будет кэшировать результат действия. Поэтому последующие запросы не попадают в базу данных до истечения срока действия кэша или являются недействительными. Если ваш код C# написан для использования результата объекта, то OutputCache может оказаться неприемлемым. – Jasen