Вопрос

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top