2008-08-14 4 views
2

Недавно я изучал возможности кэширования в ASP.NET.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) вместо этого?

ответ

4

Я думаю, что принцип «дайте компьютеру это сделать, он умнее вас» применим здесь. Так же, как управление памятью и другие сложные вещи, компьютер намного более информирован о том, что он делает, чем ваш; следовательно, способны получить больше производительности, чем вы.

У Microsoft была команда инженеров, работающих над ней, и им, вероятно, удалось выжать гораздо большую производительность из системы, чем было бы возможно для вас. Вероятно также, что встроенное кэширование ASP.NET работает на другом уровне (который недоступен для вашего приложения), что делает его намного быстрее.

2

Механизм кэширования ASP.NET существует некоторое время, поэтому он стабилен и хорошо понят. Есть много ресурсов, которые помогут вам максимально использовать его.

Возможно, ваше правильное решение может быть правильным решением в зависимости от ваших требований.

Трудная часть о кешировании - это выбор того, что безопасно кэшировать, и когда. Для приложений, в которых данные часто меняются, вы можете немного усердно устранить ошибки с кешированием, поэтому будьте осторожны.

1

Кэширование в ASP.NET является многофункциональным, и вы можете настроить кеширование довольно гранулированным способом.

В вашем случае (кэширование данных) одна из функций, которые вы упускаете, - это возможность аннулировать и обновлять кеш, если данные на SQL-сервере каким-то образом обновлены (зависимость кэша SQL).

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

Смежные вопросы