我没有找到任何东西所以我不相信我想要的东西是可能的。我想在每次访问缓存变量时重置缓存变量的滑动过期。
public class MyCache
{
public static object CachedItem
{
get
{
string key = "item11"; // users share the object at this key
object o = Cache[key];
//re-set the timer janky way
//triggers callback, which I dont want
o = (o == null) ? new object() : Cache.Remove(key);
Cache.Add(key, o, null, Cache.NoAbs..., new TimeSpan(0,5,0), High, Removed);
return o;
}
}
private static void Removed(string key, object value, CacheItemRemovedReason reason)
{
// audit MySql table
// no good because Cache.Remove is getting called manually a lot.
}
}
实际上,缓存项是聊天室中的消息列表。当添加消息时,我希望聊天室“保持活力”一点点。替代方法也欢迎。
答案 0 :(得分:2)
按设计缓存对象将在每次访问时自动重置到期日期。你应该做的就是尝试获取对象,如果它为null,就像你现在一样用滑动过期设置它,如果不是null则返回它。只需获取它,过期就会重置。 像这样
public static object CachedItem
{
get
{
string key = "item11"; // users share the object at this key
object o = Cache[key];
if (o == null)
{
o = {Get from some source};
Cache.Add(key, o, null, Cache.NoAbs..., new TimeSpan(0,5,0), High, Removed);
}
return o;
}
}