木子屋 Dnawo's BLOG

Cache.Add的absoluteExpiration和slidingExpiration参数说明

👤 dnawo 📅 2010-06-08 👁 9501 👍 0 💬 0 🔄 本站原创
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)

暂无评论。

计算题
评论需审核通过后显示
← 上一篇 ASP.NET使用Web.sitemap配置用户访问页面权限 下一篇 → .NET(C#)版DateAdd和DateDiff函数