Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET缓存_Asp.net_Sql_Caching - Fatal编程技术网

ASP.NET缓存

ASP.NET缓存,asp.net,sql,caching,Asp.net,Sql,Caching,最近我一直在研究ASP.NET中缓存的可能性 我滚动了我自己的“缓存”,因为我不知道还有什么更好的,它看起来有点像这样: public class DataManager { private static DataManager s_instance; public static DataManager GetInstance() { } private Data[] m_myData; private DataTim

最近我一直在研究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;
            }
      }

}
因此,这些值将在单例中存储一段时间,当时间到期时,这些值将被更新。如果时间未过期,并且完成了数据请求,则返回字段中存储的值

使用real方法()而不是这个方法有什么好处?

我认为格言“让计算机来做;它比你聪明”适用于这里。就像内存管理和其他复杂的事情一样,计算机比你的计算机更了解它在做什么;因此,您可以获得比您更多的性能


微软有一个工程师团队在做这项工作,他们可能已经设法从系统中榨取了比你可能得到的更多的性能。ASP.NET的内置缓存也可能在不同的级别(应用程序无法访问)上运行,从而使其速度更快。

ASP.NET缓存机制已经存在了一段时间,因此它是稳定的,并且很容易理解。有很多资源可以帮助你充分利用它

根据您的需求,自行滚动可能是正确的解决方案


缓存的难点在于选择什么是安全缓存,以及何时缓存。对于数据经常更改的应用程序,您可能会引入一些难以排除的缓存错误,因此请小心。

ASP.NET中的缓存功能丰富,您可以以非常精细的方式配置缓存

在您的示例(数据缓存)中,您缺少的一个功能是,如果SQL server上的数据以某种方式更新(SQL缓存依赖项),则可以使缓存失效并刷新缓存