Cache do ASP .Net MVC 5 JsonResult

alguém pode me explicar como implementar o cache deJsonResult ações no aplicativo MVC 5? Eu quero usar o cache de algunsajaxações chamadas usando[OutputCache()] atributo. Algumas dessas ações retornamActionResult comhtml-content, someJsonResult com listas serializadas de{Id, Title} pares que vou usar para criar listas suspensas.

Meu objetivo é reduzir a quantidade de consultas ao banco de dados (ao criar ViewModels) e solicitações do servidor (ao usar chamadas ajax).

Portanto, meu código se parece com os trechos abaixo:

[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);
}

Quando olho para o painel de ferramentas do FireFox, vejo a próxima foto paraHtml-conteúdo:

Aqui, o Firefox usa a versão em cache do cliente doajaxpágina solicitada.

Mas a situação difere comjson-conteúdo:

Ele não armazena em cache o conteúdo e parece transferir dados do servidor (cache do servidor).

Nos dois casos, os cabeçalhos de resposta têm a mesma aparência:

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

O conteúdo é solicitado usandoajax-liga como

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

Então, como faço para armazenar em cache o conteúdo json? qual é a maneira correta de fazer isso e por que a abordagem padrão não funciona?

questionAnswers(1)

yourAnswerToTheQuestion