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 ) вместо этого?

14.08.2008 14:46:30
3 ОТВЕТА
РЕШЕНИЕ

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

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

4
14.08.2008 14:52:54

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

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

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

2
14.08.2008 14:55:42

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

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

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

1
14.08.2008 15:02:04