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 algunosajax
llamadas 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?