Истечение срока действия кэшированного элемента с помощью CacheItemPolicy в .NET MemoryCache

Я запутался в свойстве AbsoluteExpiration на CacheItemPolicy.

Документация MSDN для этого говорит: «Период времени, который должен пройти, прежде чем запись в кеш будет удалена». Он использует System.DateTimeOffset для определения «периода времени».

Но если вы посмотрите наДокументация DateTimeOffset MSDNон говорит, что он «представляет момент времени ... относительно всемирного координированного времени (UTC)». Ссылка также этоПоток StackOverflow.

Ты видишь проблему? AbsoluteExpiration ожидает «период времени» (например, 5 секунд или 2 часа), но для него требуется объект, представляющий «момент времени» (например, 21 декабря 2012 г., 06:14:00 EST).

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

public class MyCache : IRoutingInfoCache
{
    MemoryCache _routingInfoCache;
    CacheItemPolicy _cachePolicy;


    public MyCache(int cacheExpiryInSeconds)
    {
        _routingInfoCache = new MemoryCache("myCache");
        _cachePolicy = new CacheItemPolicy() {
            AbsoluteExpiration = 
                new DateTimeOffset(
                    DateTime.UtcNow.AddSeconds(cacheExpiryInSeconds))
        };
    }


    public void Put(string key, object cacheItem)
    {
        // based on how I constructed _cachePolicy, will this item expire
        // in cacheExpiryInSeconds seconds?
        _routingInfoCache.Add(new CacheItem(key, cacheItem), _cachePolicy);
    }
}

Ответы на вопрос(1)

Ваш ответ на вопрос