在C#MVC3中缓存JSON数据

前端之家收集整理的这篇文章主要介绍了在C#MVC3中缓存JSON数据前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开发一个在Facebook应用程序中呈现公司的Twitter资讯的应用程序.这是一个大型公司,拥有大量流量到FB应用程序,所以我需要缓存我收到的Twitter数据(从twitter API),以便我可以避免他们的速率限制.

在我的代码中,我使用LinqToTwitter来调用API,然后我用结果构造一个JSON字符串.然后,该字符串通过AJAX进入用户的浏览器.

Twitter API调用的速率限制是每小时150个,所以我想我将把我建立的JSON数据字符串放在一个缓存对象中,并且每分钟刷新一次,这使我远远低于Twitter速率限制.

问题是我对于MVC .NET来说相当新鲜,似乎没有像在Webforms应用程序中那样使用System.Web.Caching.

在旧的webforms应用程序中,我只是做了一些事情:

private string KeyTwitterData;

            ...

            string data = null;
            if (Cache[KeyTwitterData] == null)
            {
                var url = LinqToTwitter.Request.Url;
                data = ServiceMethods.GetConversation(url);
                Cache.Insert(KeyTwitterData,data);
            }
            else
            {
                data = (string)Cache[KeyTwitterData];
            }

有人可以告诉我如何在MVC3中完成这个?

谢谢!

马特

解决方法

在ASP.NET MVC 3中,如果要缓存控制器操作的结果,您可以使用 [OutputCache]属性来装饰它:
[OutputCache(Duration = 3600,Location = OutputCacheLocation.Server,VaryByParam = "none")]
public ActionResult Foo() 
{
    var model = SomeExpensiveOperationToFetchData();
    return View(model);
}

如果不想缓存控制器动作的整个输出,可以使用MemoryCache类:

var data = MemoryCache.Default[KeyTwitterData];
if (data == null)
{
    data = SomeExpensiveOperationToFetchData();
    MemoryCache.Default.Add(KeyTwitterData,data,DateTime.Now.AddMinutes(5));
}

// use the data variable here

猜你在找的C&C++相关文章