У меня есть приложение ASP.NET MVC, которое использует различные операции веб-API. Он использует ACS для обеспечения безопасности и поэтому пользователям приходится сначала регистрироваться в своей учетной записи Microsoft, прежде чем они смогут что-либо сделать.Кэш приложения ASP.NET для хранения пользовательских данных
Одна из этих операций веб-API получает список разрешений для текущего пользователя. Этот вызов выполняется для каждого запроса страницы, так как нам нужна эта информация для правильного отображения, отключения или скрытия элементов пользовательского интерфейса. Это прекрасно работает.
Поскольку разрешения не меняются часто, я хотел бы их кэшировать, чтобы вызов веб-API выполнялся только в первый раз.
Обычно сеанс - это способ сохранить данные, специфичные для пользователя, в памяти, но я хочу оставаться без состояния/без сеанса.
Было бы технически нормально использовать кэш приложений, в котором я храню разрешения с ключом, который включает уникальную идентификацию пользователя? Существуют ли какие-либо риски/недостатки такого рода?
[Я также хотел бы сохранить возможность открытой позже заменить его (Azure) распределенного кэширования позже, если это необходимо, но сейчас решение должно быть простым построен в одном, который свободен :)]
EDIT: кеш предназначен для работы до тех пор, пока пользователь работает, поэтому это в основном кратковременный кеш.
Спасибо за ваш ответ! Куки не ограничены по размеру? Когда перезапускается процесс приложения? Это когда перезапуск appdomain? Это не так много, я думаю? Кроме того, размер памяти: если я использую скользящие опции, это проблема? Не кэшируется ли автоматическое удаление содержимого в случае проблем с памятью? –
1. Максимальный размер файла cookie - 4093 байта. Если вам нужно хранить данные, специфичные для пользователя, вы можете рассмотреть localStorage. 2. Процесс подачи заявки может быть перезапущен из-за ряда причин. Например, если вы внесете некоторые изменения и выгрузите новую dll в der derory. 3. Кэш сервера не имеет дело с объектом Application, он был разработан для совершенно другой цели. 4. Если вы нашли мой ответ приемлемым, пожалуйста, не забудьте отметить его как принятый :) –