После создания подтверждения концепции сайта MVC ASP.NET и проверки существовало соответствующее разделение проблем, я заметил, что делал много дорогой избыточной базы данных, призывает к информации о текущем пользователе.
Будучи исторически рабочим столом и сервисным человеком, моя первая мысль состояла в том, чтобы кэшировать результаты дб в некоторых static
s. Не потребовался большого поиска, чтобы видеть, что выполнение этого сохранит данные текущего пользователя через целый AppDomain для всех пользователей.
Затем я думал об использовании HttpContext.Current
. Однако при помещении материала здесь, когда пользователь выходится из системы, затем когда они войдут в систему кэшированные данные устареют. Я мог обновить этот каждый раз, когда вход в систему/выход из системы происходит, но я не могу сказать, чувствует ли это себя хорошо. В отсутствие других идей это - то, где я склоняюсь.
Что легкий путь состоит в том, чтобы точно кэшировать пользовательские детали и избежать необходимости делать тоннами вызовов базы данных?
Если информация, которую вы хотите кэшировать, является PER-USER, и только пока они активны, то сеанс - это правильное место.
http://msdn.microsoft.com/en-us/library/system.web.sessionState.httpsessessState.aspx
Вы ищете System.Web.Caching.Cache
http://msdn.microsoft.com/en-us/library/system.web.caching.cache.aspx
Вы можете использовать параллельный 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, не требуя никакого изменения кода.