题
最近我一直在研究 ASP.NET 中缓存的可能性。
我推出了自己的“Cache”,因为我不知道更好,它看起来有点像这样:
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 Server 上的数据以某种方式更新(SQL 缓存依赖项),则能够使缓存失效并刷新。
不隶属于 StackOverflow