【发布时间】:2017-04-13 12:45:07
【问题描述】:
我想缓存一个动作的返回数据。为此,我使用OutPutCacheAttribute。这是我的客户端代码:
$(document).ready(function() {
$.get('@Url.Action("GetMenu", "Home")', null,
function(data) {
parseMenu(data);
});
}
这是我的服务器代码:
[HttpGet]
[OutputCache(Duration = 86400, Location = OutputCacheLocation.Server)]
public ContentResult GetMenu()
{
string jsonText = GetData(); //some code
return new ContentResult
{
Content = jsonText,
ContentType = "text/json"
};
}
如您所见,我使用OutputCacheAttribute 来缓存服务器响应。但它不起作用。每次我加载页面时,都会调用操作 Home/GetMenu。即使我直接在浏览器的地址栏中输入“localhost/Home/GetMenu”,它也会被调用。我哪里看错了?
UPD 我创建了第二个操作来测试此属性而无需调试。这是它的代码:
[HttpGet]
[OutputCache(Duration = 86400, Location = OutputCacheLocation.ServerAndClient, VaryByParam = "none")]
public JsonResult GetJson()
{
return Json(new
{
random = new Random().Next(100)
},
JsonRequestBehavior.AllowGet);
}
我想如果 OutputCache 属性正常工作(并且我正确使用它),那么会调用一次操作,并且每次都会得到相同的响应。但如果不是,那么我每次都会得到不同的响应,因为每次都会生成随机数。
而当我调用这个动作时,我总是收到不同的响应,例如{"random":36}、{"random":84}等等
【问题讨论】:
-
你解决了这个@Pupkin 吗?我想知道是什么原因。
-
@TorbjörnHansson 很难过,但我还没有解决这个问题
-
可能是你的输出有 cookie stackoverflow.com/questions/20027813/…
标签: c# asp.net-mvc caching