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

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

Будучи исторически рабочим столом и сервисным человеком, моя первая мысль состояла в том, чтобы кэшировать результаты дб в некоторых statics. Не потребовался большого поиска, чтобы видеть, что выполнение этого сохранит данные текущего пользователя через целый AppDomain для всех пользователей.

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

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

7
задан Dinah 15 January 2010 в 20:36
поделиться

3 ответа

Если информация, которую вы хотите кэшировать, является PER-USER, и только пока они активны, то сеанс - это правильное место.
http://msdn.microsoft.com/en-us/library/system.web.sessionState.httpsessessState.aspx

5
ответ дан 6 December 2019 в 23:06
поделиться
3
ответ дан 6 December 2019 в 23:06
поделиться

Вы можете использовать параллельный Foreach (.NET 4.0) или вы можете попробовать Parallel Faralel.Foreach ITERATOR для .NE3.5. Это может ускорить ваш поиск.

-121--1278545-

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

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

http://esj.com/articles/2009/03/17/optimize-scality -ASP-Net.aspx

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

Не знаю много о memcached, но я использовал ncache Express by alachisoft, он позволяет использовать Caching asp.net, не требуя никакого изменения кода.

3
ответ дан 6 December 2019 в 23:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: