向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)
,我会得到相同的结果吗?有没有理由使用其中一种?
答案 0 :(得分:1)
是的,短语"在指定的持续时间后#34;在文档中有点令人困惑,但DateTimeOffset
类型和AbsoluteExpiration
属性名称毫无疑问。
关于如何构造DateTimeOffset
的实例的方式:在这种情况下实际上没有任何区别。 DateTimeOffset.UtcNow.AddSeconds(60)
和DateTimeOffset.Now.AddSeconds(60)
将指向相同的绝对时间。这些日期时间因时区而异,但在两种情况下,缓存条目到期时间都相同。所以没有任何理由更喜欢这样或那样的。