我有一個應用程序,從凌晨3點,每天早上在內容直到那時方面 沒有什麼變化第三方下載數據...ASP.Net緩存
是有可能緩存「產品信息」到那時爲止? 或者這是我應該在global.asax中設置的東西?
我有一個應用程序,從凌晨3點,每天早上在內容直到那時方面 沒有什麼變化第三方下載數據...ASP.Net緩存
是有可能緩存「產品信息」到那時爲止? 或者這是我應該在global.asax中設置的東西?
是的,你可以將它緩存到那時。有很多方法可以做到這一點。
如果你有一個服務器端調用來檢索數據,那麼當你第一次得到它並將到期時間設置爲第二天凌晨3點時,我會簡單地將這些數據添加到緩存中。然後在每個頁面調用中檢查此數據對象的緩存,如果它返回null,則啓動另一次數據提取。
你也可以使用頁面輸出緩存,但是這並沒有給你這樣的詳細控制。
是這樣的:
if (HttpContext.Current.Cache["MyData"] != null)
return HttpContext.Current.Cache["MyData"] as DataObjectClass
//Get data into dataobject
HttpContext.Current.Cache.Add(
"MyData",
DataObject,
DateTime (tomorrow 3am), // psuedo
null,
TimeSpan.Zero,
System.Web.Caching.CacheItemPriority.Normal,
null);
return DataObject;
您可以設置它是網頁本身。在該頁面的代碼中:
Response.Cache.SetExpires("put tomorrow's date @ 3AM here");
Response.Cache.SetCacheability(HttpCacheability.Public);
另一種選擇是使用的System.Web.Caching.Cache類。每次加載數據時,都可以將其緩存在此處,然後根據需要進行檢索。這個類允許TimeSpan過期,但是由於您每天在特定時間下載數據並不重要。
using System.Web.Caching;
Public Class SomeClass
{
Public SomeDataCollection GetCachedData()
{
if(Cache["Key"] == null) //You want to always be sure to check if set
Cache["Key"] = GetDataCollectionFromSomewhere();
return Cache["Key"];
}
}
我會堅持每24小時的第三方數據。緩存它取決於數據是什麼。它是需要進一步處理的文件嗎?然後處理它並將其緩存在內存中。你的故障轉移是這樣的:內存緩存,臨時持久位置,第三方位置。
doh!我討厭成爲一個緩慢的typer :(這就是我將要做的:) – 2009-07-15 11:19:20