[英]ASP.Net Caching
我有一個應用程序,每天凌晨3點從第三方下載數據,直到那時內容的內容都沒有改變...
在此之前是否可以緩存“產品信息”頁面? 還是我應該在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;
另一個選擇是使用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"];
}
}
您可以在該頁面上自行設置。 在該頁面后面的代碼中:
Response.Cache.SetExpires("put tomorrow's date @ 3AM here");
Response.Cache.SetCacheability(HttpCacheability.Public);
我會每24小時保留一次第三方數據。 緩存取決於數據是什么。 是否需要進一步處理的文件? 然后對其進行處理並將其緩存在內存中。 您的故障轉移將是這樣的:內存緩存,臨時持久位置,第三方位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.