2009-07-15 153 views
2

我有一個應用程序,從凌晨3點,每天早上在內容直到那時方面 沒有什麼變化第三方下載數據...ASP.Net緩存

是有可能緩存「產品信息」到那時爲止? 或者這是我應該在global.asax中設置的東西?

回答

2

是的,你可以將它緩存到那時。有很多方法可以做到這一點。

如果你有一個服務器端調用來檢索數據,那麼當你第一次得到它並將到期時間設置爲第二天凌晨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; 
+0

doh!我討厭成爲一個緩慢的typer :(這就是我將要做的:) – 2009-07-15 11:19:20

1

您可以設置它是網頁本身。在該頁面的代碼中:

Response.Cache.SetExpires("put tomorrow's date @ 3AM here"); 
Response.Cache.SetCacheability(HttpCacheability.Public); 
2

另一種選擇是使用的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"]; 
    } 
} 
0

我會堅持每24小時的第三方數據。緩存它取決於數據是什麼。它是需要進一步處理的文件嗎?然後處理它並將其緩存在內存中。你的故障轉移是這樣的:內存緩存,臨時持久位置,第三方位置。