Документация.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)
будет указывать на то же абсолютное время. Эти даты будут различаться по часовым поясам, но момент истечения срока действия записи в кэш будет одинаковым в обоих случаях. Так что нет никаких оснований отдавать предпочтение тому или иному.