Cache.Add的absoluteExpiration和slidingExpiration参数说明

Cache.Add方法完整签名如下:

public object Add(string key, object value, CacheDependency dependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration, CacheItemPriority priority, CacheItemRemovedCallback onRemoveCallback)

对于absoluteExpiration和slidingExpiration两个参数,msdn说明如下:

引用内容 引用内容
absoluteExpiration
类型:System.DateTime
所添加对象将过期并被从缓存中移除的时间。如果使用可调过期,则 absoluteExpiration 参数必须为 NoAbsoluteExpiration。

slidingExpiration
类型:System.TimeSpan
最后一次访问所添加对象时与该对象过期时之间的时间间隔。如果该值等效于 20 分钟,则对象在最后一次被访问 20 分钟之后将过期并从缓存中移除。如果使用绝对过期,则 slidingExpiration 参数必须为 NoSlidingExpiration。

其实msdn说得已经很明白了,但在开始一直没理解,导致程序老报错说"最匹配的重载方法具有一些无效参数",下边再说明下:

·absoluteExpiration:用于设置绝对过期时间,它表示只要时间一到就过期,所以类型为System.DateTime,当给这个参数设置了一个时间时,slidingExpiration参数的值就只能为Cache.NoSlidingExpiration,否则出错;
·slidingExpiration:用于设置可调过期时间,它表示当离最后访问超过某个时间段后就过期,所以类型为System.TimeSpan,当给这个参数设置了一个时间段时,absoluteExpiration的值就只能为Cache.NoAbsoluteExpiration,否则出错;

当然,也允许这两个参数都不设置值,那么absoluteExpiration值为Cache.NoAbsoluteExpiration,slidingExpiration值为Cache.NoSlidingExpiration也是可以的,比如缓存依赖于某个文件时,这就非常有用。

最后再给两个示例:
Cache.Add("time", DateTime.Now.ToString(), null, DateTime.Now.AddSeconds(10), Cache.NoSlidingExpiration, CacheItemPriority.Normal, null);
Cache.Add("time", DateTime.Now.ToString(), null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(10), CacheItemPriority.Normal, null);


评论: 0 | 引用: 0 | 查看次数: 9030
发表评论
登录后再发表评论!