ASP .Net MVC 5 JsonResult caché

alguien puede explicarme cómo implementar el almacenamiento en caché deJsonResult acciones en la aplicación MVC 5? Quiero usar el almacenamiento en caché de algunosajaxllamadas acciones usando[OutputCache()] atributo. Algunas de estas acciones regresanActionResult conhtml-contenido, algunosJsonResult con listas serializadas de{Id, Title} pares que voy a usar para construir listas desplegables.

Mi objetivo es reducir la cantidad de consultas DB (al construir ViewModels) y las solicitudes del servidor (cuando utilizo llamadas ajax para ello).

Entonces, mi código se ve como fragmentos a continuación:

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

Cuando miro el panel de herramientas de Firefox, veo la siguiente imagen paraHtml-contenido:

Aquí Firefox usa la versión en caché del lado del cliente deajax-página solicitada.

Pero la situación difiere conjson-contenido:

No almacena en caché el contenido y parece transferir datos del servidor (caché del lado del servidor).

En ambos casos, los encabezados de respuesta tienen el mismo aspecto:

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

El contenido se solicita utilizando similarajax-llama como

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

Entonces, ¿cómo guardo en caché el contenido json? ¿Cuál es la forma correcta de hacerlo y por qué el enfoque predeterminado no funciona?

Respuestas a la pregunta(1)

Su respuesta a la pregunta