隐藏

C#缓存absoluteExpiration、slidingExpiration两个参数的疑惑

发布:2022/4/21 10:33:38作者:管理员 来源:本站 浏览次数:1137



看了很多资料终于搞明白cache中absoluteExpiration,slidingExpiration这两个参数的含义。


absoluteExpiration:用于设置绝对过期时间,它表示只要时间一到就过期,所以类型为System.DateTime,当给这个参数设置了一个时间时,slidingExpiration参数的值就只能为Cache.NoSlidingExpiration,否则出错;


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


    两个使用实例


Cache.Add("name", content, null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(10), System.Web.Caching.CacheItemPriority.Normal, null);


Cache.Add("name", content, null, DateTime.Now.AddMinutes(10), System.Web.Caching.Cache.NoSlidingExpiration, CacheItemPriority.Normal, null);






 //

       // 摘要:

       //     Inserts an object into the System.Web.Caching.Cache object together with dependencies,

       //     expiration policies, and a delegate that you can use to notify the application

       //     before the item is removed from the cache.

       //

       // 参数:

       //   key:

       //     The cache key that is used to reference the object.

       //

       //   value:

       //     The object to insert into the cache.

       //

       //   dependencies:

       //     The file or cache key dependencies for the item. When any dependency changes,

       //     the object becomes invalid and is removed from the cache. If there are no dependencies,

       //     this parameter contains null.

       //

       //   absoluteExpiration:

       //     The time at which the inserted object expires and is removed from the cache.

       //     To avoid possible issues with local time such as changes from standard time to

       //     daylight saving time, use System.DateTime.UtcNow instead of System.DateTime.Now

       //     for this parameter value. If you are using absolute expiration, the slidingExpiration

       //     parameter must be set to System.Web.Caching.Cache.NoSlidingExpiration.

       //

       //   slidingExpiration:

       //     The interval between the time that the cached object was last accessed and the

       //     time at which that object expires. If this value is the equivalent of 20 minutes,

       //     the object will expire and be removed from the cache 20 minutes after it was

       //     last accessed. If you are using sliding expiration, the absoluteExpiration parameter

       //     must be set to System.Web.Caching.Cache.NoAbsoluteExpiration.

       //

       //   onUpdateCallback:

       //     A delegate that will be called before the object is removed from the cache. You

       //     can use this to update the cached item and ensure that it is not removed from

       //     the cache.

       //

       // 异常:

       //   T:System.ArgumentNullException:

       //     The key, value, or onUpdateCallback parameter is null.

       //

       //   T:System.ArgumentOutOfRangeException:

       //     You set the slidingExpiration parameter to less than TimeSpan.Zero or the equivalent

       //     of more than one year.

       //

       //   T:System.ArgumentException:

       //     The absoluteExpiration and slidingExpiration parameters are both set for the

       //     item you are trying to add to the Cache.-or-The dependencies parameter is null,

       //     and the absoluteExpiration parameter is set to System.Web.Caching.Cache.NoAbsoluteExpiration,

       //     and the slidingExpiration parameter is set to System.Web.Caching.Cache.NoSlidingExpiration.

       public void Insert(string key, object value, CacheDependency dependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration, CacheItemUpdateCallback onUpdateCallback);