簡體   English   中英

ASP.Net緩存

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM