Срок действия MemoryCache .NET

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

var memoryCache = MemoryCache.Default;

if (!memoryCache.Contains("data"))
{
    var timer = DateTimeOffset.UtcNow.AddMinutes(1);
    var data = jsonContent;

    memoryCache.Add("data", data, timer);
}

Как я могу обойти параметр истечения срока действия? Я что-то читал о CacheItemPolicy, но ничего не понял.

Спасибо за любую помощь заранее.


person Peter K    schedule 22.03.2019    source источник


Ответы (1)


Глядя на документацию, кажется, что вы можете установить для свойства SlidingExpiration объекта CacheItemPolicy значение NoSlidingExpiration, что, по-видимому, указывает на то, что срок его действия не истечет, см. здесь

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

Итак, вы можете сделать что-то вроде следующего:

memoryCache.Add(new CacheItem("data", data), new CacheItemPolicy
{
    SlidingExpiration = System.Runtime.Caching.NoSlidingExpiration
});

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

person Jamie Rees    schedule 22.03.2019