ASP .Net MVC 5 JsonResult кеширование

может кто-нибудь объяснить мне, как реализовать кэшированиеJsonResult действия в приложении MVC 5? Я хочу использовать кеширование некоторыхajaxдействия с использованием[OutputCache()] приписывать. Некоторые из этих действий возвращаютсяActionResult сhtmlСодержание, некоторыеJsonResult с сериализованными списками{Id, Title} пары, которые я собираюсь использовать для построения выпадающих списков.

Моя цель - уменьшить количество запросов к базе данных (при создании ViewModels) и запросов к серверу (при использовании для этого ajax-вызовов).

Итак, мой код выглядит как фрагменты ниже:

[OutputCache(Duration=60*60*24)]
public async Task<ActionResult> SearchCaseOrgDialog(){
    //extract data return html page
    return View();
}

[OutputCache(Duration=60*60*24)]
public async Task<JsonResult> AjaxOrgDepartments(){
    //query database, serialize data, return json
    var result = await ctx.OrgDepartments
                          .Select(d => new { 
                                        Id = d.Id, 
                                        Title =  d.Title }
                                 )
                          .ToListAsync();

    return Json(result, JsonRequestBehavior.AllowGet);
}

Когда я смотрю на панель инструментов Firefox, я вижу следующую картинку дляHtml-поперечник:

Здесь Firefox использует кэшированную версию на стороне клиентаajaxзапрошенная страница.

Но ситуация отличается сjson-поперечник:

Он не кэширует контент и, похоже, передает данные с сервера (серверный кеш).

В обоих случаях заголовки ответа выглядят одинаково:

Cache-Control:"public, max-age=86400, s-maxage=0"

Контент запрашивается с использованием аналогичныхajaxзвонки как

$.get(url, null, function(data){
    //do something with data
});

Итак, как мне кешировать json-контент? Какой правильный способ сделать это, и почему подход по умолчанию не работает?

Ответы на вопрос(1)

Ваш ответ на вопрос