加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – OutputCache不起作用

发布时间:2020-12-15 22:43:38 所属栏目:百科 来源:网络整理
导读:我想缓存一个动作的返回数据.我为此目的使用OutPutCacheAttribute.这是我的客户端代码: $(document).ready(function() { $.get('@Url.Action("GetMenu","Home")',null,function(data) { parseMenu(data); });} 这是我的服务器代码: [HttpGet][OutputCache(
我想缓存一个动作的返回数据.我为此目的使用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}等等

解决方法

在其默认实现中,输出缓存是进程绑定的并存储在内存中.因此,如果您执行诸如停止和开始调试之类的操作,则会销毁先前缓存的任何内容.实际上,更准确地说,你已经杀死了进程并启动了一个新进程,并且由于缓存是受进程限制的,因此它与旧进程一起消失了.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读