簡體   English   中英

ASP.NET緩存

[英]ASP.NET Caching

最近,我一直在研究ASP.NET中緩存的可能性。

我滾動了自己的“緩存”,因為我不知道更好,它看起來像這樣:

public class DataManager
{

      private static DataManager s_instance;

      public static DataManager GetInstance()
      {
      }

      private Data[] m_myData;
      private DataTime m_cacheTime;

      public Data[] GetData()
      {
            TimeSpan span = DateTime.Now.Substract(m_cacheTime);

            if(span.TotalSeconds > 10)
            {
                  // Do SQL to get data
                  m_myData = data;
                  m_cacheTime = DateTime.Now;
                  return m_myData;     
            }
            else
            {
                  return m_myData;
            }
      }

}

因此,這些值將以單例形式存儲一段時間,並且當時間到期時,將更新這些值。 如果時間尚未到期,並且完成了對數據的請求,則將返回該字段中存儲的值。

代替使用實際方法( http://msdn.microsoft.com/en-us/library/aa478965.aspx )有什么好處?

我認為“讓計算機去做;比您聰明”的格言適用於此。 就像內存管理和其他復雜的事情一樣,計算機比您的實際情況要了解得多。 因此,能夠獲得比您更高的性能。

微軟擁有一支由工程師組成的團隊,他們可能設法從系統中擠出了比您可能更多的性能。 ASP.NET的內置緩存還可能在不同的級別(您的應用程序無法訪問)上運行,從而使其速度更快。

ASP.NET緩存機制已經存在了一段時間,因此它是穩定且易於理解的。 有很多資源可以幫助您充分利用它。

根據您的要求,自己動手可能是正確的解決方案。

緩存的難點在於選擇什么可以緩存以及何時可以緩存。 對於經常更改數據的應用程序,您可能會引入一些難以解決的緩存錯誤,因此請當心。

ASP.NET中的緩存功能豐富,您可以以非常精細的方式配置緩存。

在您的情況下(數據緩存),您缺少的功能之一是能夠以某種方式(SQL緩存相關性)更新SQL Server上的數據來使緩存無效並刷新緩存。

http://msdn.microsoft.com/en-us/library/ms178604.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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