Jquery 将输出缓存VaryByParam与JSON请求一起使用
我有一个控制器动作,它接收一个Jquery 将输出缓存VaryByParam与JSON请求一起使用,jquery,json,asp.net-mvc,asp.net-mvc-5,outputcache,Jquery,Json,Asp.net Mvc,Asp.net Mvc 5,Outputcache,我有一个控制器动作,它接收一个Person类型参数。使用基于JSON的模型绑定功能从JSON请求绑定参数 我的VaryByParam在本例中不起作用,因为请求不包含任何“经典”变量(例如GET或POST),但在本例中,数据位于HTTP正文中。在客户端,我使用KnockoutJS,因此我使用ko.toJSON方法发布数据 如何根据JSON请求中的字段值实现输出缓存 该示例仅用于演示 // model public class Person { public int PersonID { ge
Person
类型参数。使用基于JSON的模型绑定功能从JSON请求绑定参数
我的VaryByParam
在本例中不起作用,因为请求不包含任何“经典”变量(例如GET或POST),但在本例中,数据位于HTTP正文中。在客户端,我使用KnockoutJS
,因此我使用ko.toJSON
方法发布数据
如何根据JSON请求中的字段值实现输出缓存
该示例仅用于演示
// model
public class Person {
public int PersonID { get; set; }
public string Name { get; set; }
}
// action
[OutputCaching(Duration = 60, VaryByParam = "PersonID")]
public JsonResult Process(Person person) {
...
}
// client-side
$.post({
url: '/mycontroller/myaction',
...
data: ko.toJSON(personViewModel),
...
});
VaryByCustom
是你的朋友
覆盖global.asax.cs
文件中的VaryByCustom
方法。这允许您创建自己的检查,并且由于您可以访问此处的HTTPContext,因此您将能够检查消息正文中的post值
查看解释如何创建自己的实现的博客
希望这有帮助谢谢,我知道VaryByCustom,我用它来指定用户级缓存。然而,要实现这一点似乎相当复杂,因为我应该以某种方式“盲目”解析JSON请求体以提取所需的属性,我还不知道从哪里开始,但我会尝试一下。