MemoryCache не сохраняет объект (набор данных) для любых вызовов Ajax - приложение ASP.Net MVC

У меня есть некоторые статические значения, поступающие из базы данных, которые необходимо сохранять в приложении для каждого входа пользователя (я использую приложение ASP.Net MVC 4).

Для этого я реализовал MemoryCache (не уверен, что это лучше, чем использовать HttpApplicationState или System.Web.HttpContext.Current.Cache.). Оценил, если какой-либо намек, который я могу получить на этом тоже.

//Create a custom policy as per the business need
CacheItemPolicy wkflPolicy = new CacheItemPolicy(); // I dont want to set expiration


if (wkflCache.Get("MyKey") == null)
        {
            // Caching all static DB values.
            DataSet myDS= objEditComponent.GetDBValues();
            wkflCache.Add("MyKey", myDS, wkflPolicy);
        }

Он сохраняется для всех обратных передач, но когда я делаю вызов Ajax со своей страницы cshtml (просмотр), я не мог получить значение кеша, поэтому должен сделать еще один вызов БД после проверки нулевого условия.

Это происходит из-за нехватки памяти (интересно, почему каждый раз, когда я делаю вызов ajax, возникает нехватка памяти) или я что-то здесь упускаю?


person Biki    schedule 02.06.2016    source источник


Ответы (1)


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

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

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

person Jonathan Allen    schedule 03.06.2016