ASP.NET缓存
时间:2020-03-05 18:39:39 来源:igfitidea点击:
最近,我一直在研究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