Кэширование пользовательских данных, чтобы избежать лишних посещений базы данных. - PullRequest
7 голосов
/ 15 января 2010

После создания концепции концепции сайта ASP.NET MVC и обеспечения надлежащего разделения интересов я заметил, что выполняю много дорогих избыточных обращений к базе данных для получения информации о текущем пользователе. *

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

Затем я подумал об использовании HttpContext.Current. Тем не менее, если вы поместите материал здесь, когда пользователь вышел из системы, тогда, когда они войдут в систему, ваши кэшированные данные будут устаревшими. Я мог бы обновлять это каждый раз, когда происходит вход / выход из системы, но я не могу сказать, правильно ли это выглядит. В отсутствие других идей, это то, куда я склоняюсь.

Что такое легкий способ точно кэшировать данные пользователя и избежать необходимости делать тонны вызовов базы данных?

Ответы [ 3 ]

5 голосов
/ 15 января 2010

Если информация, которую вы хотите кэшировать, предназначена для каждого пользователя и только тогда, когда они активны, тогда Session является правильным местом.
http://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.aspx

3 голосов
/ 21 января 2010

Управление состоянием сеанса ASP.NET подходит для некоторых ситуаций, но при большой нагрузке оно создает узкие места в производительности ASP.NET. Подробнее об этом здесь:

http://msdn.microsoft.com/en-us/magazine/dd942840.aspx

http://esj.com/articles/2009/03/17/optimize-scalability-asp-net.aspx

Решением, позволяющим избежать узких мест, является использование распределенного кэширования. На рынке есть много бесплатных распределенных решений для кэширования, таких как Memcached или NCache Express.

Не знаю много о Memcached, но я использовал NCache Express от Alachisoft, он позволяет вам использовать кэширование ASP.NET без необходимости изменения кода.

3 голосов
/ 15 января 2010

Что вам нужно, так это System.Web.Caching.Cache

http://msdn.microsoft.com/en-us/library/system.web.caching.cache.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...