【发布时间】:2014-04-06 17:25:39
【问题描述】:
我目前尝试将项目插入到 MemoryCache.Default 实例中,该实例有效。但物品不会过期!轮询间隔默认为 2 分钟,MemoryCache 没有具体设置。
添加项目例程是这样的:
string key = "someKey";
var faultyItem = GetFaultyItemToBlockFromProcessingTheNextThreeMinutes();
if (!MemoryCache.Default.Contains(key))
{
MemoryCache.Default.Add(
new CacheItem(key, faultyItem),
new CacheItemPolicy()
{
AbsoluteExpiration = DateTimeOffset.UtcNow.AddMinutes(3)
});
}
但是,缓存中的项目永不过期!我等了 10 多分钟,它们还在缓存中。主要目的是通过尝试每隔几秒钟处理一次查询来防止它们淹没数据库。它们每隔几秒钟检查一次,但没有 SlidingExpiration。他们应该在大约 3 分钟后再次检查,5 分钟因为最大延迟仍然是可以容忍的。
我不想在 XML 等代码之外进行任何配置。如果不可能,是否有一个很好的替代 MemoryCache 的方法?也许通过参数和属性使用数字/对象键和配置?
【问题讨论】:
-
您确定您的环境在 UTC 时区运行吗?你怎么“等”了10分钟?
标签: .net caching memorycache cache-expiration content-expiration