[英]Caching JSON Data in C# MVC3
我正在開發一個應用程序,在Facebook應用程序上顯示公司的Twitter提要。 這是一家擁有大量FB流量的公司,所以我需要緩存我收到的Twitter數據(來自twitter API),以便我可以避免他們的速率限制。
在我的代碼中,我使用LinqToTwitter來調用API,然后使用結果構造一個JSON字符串。 然后通過AJAX將該字符串提供給用戶的瀏覽器。
Twitter API調用的速率限制是每小時150,所以我想我將把我構建的JSON數據字符串放在緩存對象中,每分鍾只刷新一次,使我遠低於Twitter速率限制。
問題是我對MVC for .NET相當新,似乎無法使用System.Web.Caching,就像我在webforms應用程序中所做的那樣。
在較舊的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
在控制器中使用HttpContext.Cache
string data = null;
if (HttpContext.Cache[KeyTwitterData] == null)
{
var url = LinqToTwitter.Request.Url;
data = ServiceMethods.GetConversation(url);
HttpContext.Cache.Insert(KeyTwitterData, data);
}
else
{
data = (string)HttpContext.Cache[KeyTwitterData];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.