Каков наилучший способ кэширования информации о пользователях в моем базовом контроллере в asp.net mvc - PullRequest
0 голосов
/ 30 октября 2010

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

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

Ответы [ 2 ]

2 голосов
/ 30 октября 2010

Вы можете использовать сеанс ASP.NET для хранения пользовательских значений.

1 голос
/ 30 октября 2010

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

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

if (Session("user") == null)
{
    Session("user") = CallWebService.GetUser(userId);
}

Почему вы должны держать Сессию маленькой, для этой веб-страницы :

Избегайте хранения слишком большого количества данных в переменных сеанса и убедитесь, что время ожидания сеанса является разумным. Это может использовать значительный объем памяти сервера. Помните, что данные, хранящиеся в переменных сеанса, могут зависать еще долго после того, как пользователь закроет браузер. Слишком много переменных сеанса могут поставить сервер на колени.

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