Документация.Net MemoryCache AbsoluteExpiration сбивает с толку

При добавлении записи кэша в System.Runtime.Caching.MemoryCache вы можете указать CacheItemPolicy с AbsoluteExpiration. Согласно документации ( https://msdn.microsoft.com/en-us/library/Dd780607(v=VS.110,d=hv.2).aspx), AbsoluteExpiration - это "период времени, который должен пройти до запись в кэше выселена ".

Да, это то, что я хочу - указать "период времени", по истечении которого моя запись в кэше истечет. Но AbsoluteExpiration относится к типу DateTimeOffset, а не к TimeSpan, поэтому это "момент времени", а не "период времени". Как я должен установить это тогда? Например, если я хочу, чтобы срок действия записи истек через 60 секунд, я должен установить AbsoluteExpiration в DateTimeOffset.UtcNow.AddSeconds(60)? Получу ли я такой же результат, если я установлю его на DateTimeOffset.Now.AddSeconds(60)? Есть ли причина использовать один или другой?

1 ответ

Решение

Ну да, фраза "после указанной продолжительности" в документации немного сбивает с толку, но DateTimeOffset тип и AbsoluteExpiration Название недвижимости не оставляет сомнений.

Что касается того, как построить экземпляр DateTimeOffset: нет никакой разницы в этом случае. DateTimeOffset.UtcNow.AddSeconds(60) а также DateTimeOffset.Now.AddSeconds(60) будет указывать на то же абсолютное время. Эти даты будут различаться по часовым поясам, но момент истечения срока действия записи в кэш будет одинаковым в обоих случаях. Так что нет никаких оснований отдавать предпочтение тому или иному.

Другие вопросы по тегам