【发布时间】:2017-11-13 10:02:00
【问题描述】:
我正在尝试使用 .Net 4.5 中的 MemoryCache 将对象存储 1 个月(绝对过期 - 从创建缓存起 1 个月)。
问题 - 缓存似乎会在一天内过期 - 实际上有时会在几个小时内过期。
代码片段
// Setting the cache with absolute expiration time of 1 month:
string objName = "myObj";
MemoryCache memCache = MemoryCache.Default;
memCache.Add(tokenID, myObj, DateTimeOffset.UtcNow.AddMonths(1));
// Accessing the cache later
MemoryCache getCache = MemoryCache.Default;
getCache.Get(tokenID);
问题
- 我是否正确设置了缓存?我还没有看到任何使用 AddMonths() 的示例,但是有很多使用 AddDays() 的示例——但这有关系吗?
- 是否有我可以用于绝对到期的最长时间? (我还没有遇到任何设置缓存超过 30 天,同时没有使用无限过期时间的示例。)
- 还有什么可能导致缓存如此快过期?
非常感谢!
【问题讨论】:
-
网络服务器是否有在空闲时关闭站点的设置,是否有持续的流量来阻止这种情况发生?
-
@SamiKuhmonen - 我站点的应用程序池设置有空闲超时 = 5 分钟和关闭时间限制 = 90 秒。你是在说这些吗?
-
是的,正是这些。这意味着如果五分钟内没有对您的站点的请求,则工作人员将被关闭,这也会从内存缓存中删除所有内容。这很可能是导致问题的原因。
-
@SamiKuhmonen - 啊!一定是这样的。非常感谢!
标签: c# .net caching memorycache