.Net MemoryCache AbsoluteExpiration文档令人困惑

时间:2017-12-04 02:30:38

标签: c# caching memorycache

向System.Runtime.Caching.MemoryCache添加缓存条目时,可以使用AbsoluteExpiration指定CacheItemPolicy。根据文档(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 个答案:

答案 0 :(得分:1)

是的,短语"在指定的持续时间后#34;在文档中有点令人困惑,但DateTimeOffset类型和AbsoluteExpiration属性名称毫无疑问。

关于如何构造DateTimeOffset的实例的方式:在这种情况下实际上没有任何区别。 DateTimeOffset.UtcNow.AddSeconds(60)DateTimeOffset.Now.AddSeconds(60)将指向相同的绝对时间。这些日期时间因时区而异,但在两种情况下,缓存条目到期时间都相同。所以没有任何理由更喜欢这样或那样的。