private static DataManager"/>

关于sql:ASP.NET缓存

关于sql:ASP.NET缓存

ASP.NET Caching

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

我滚动了自己的"缓存",因为我不知道更好,它看起来像这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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服务器上的数据来使缓存无效并刷新缓存。

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


推荐阅读