[英]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上的數據來使緩存無效並刷新緩存。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.