// 实现用于 Web 应用程序的缓存。无法继承此类。
public sealed class Cache : IEnumerable
{
// 将指定项添加到 System.Web.Caching.Cache 对象,该对象具有依赖项、过期和优先级策略
// 以及一个委托(可用于在从 Cache 移除插入项时通知应用程序)。
public object Add(string key, object value, CacheDependency dependencies,
DateTime absoluteExpiration, TimeSpan slidingExpiration,
CacheItemPriority priority, CacheItemRemovedCallback onRemoveCallback);
//
// System.ArgumentOutOfRangeException:
// 将 slidingExpiration 参数设置为小于 TimeSpan.Zero 或大于一年的等效值。
public void Insert(string key, object value, CacheDependency dependencies,
DateTime absoluteExpiration, TimeSpan slidingExpiration,
CacheItemPriority priority, CacheItemRemovedCallback onRemoveCallback);
//////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////
Add方法也可以将一个对象放入缓存,这个方法有7个参数,而Insert也有一个签名类似的重载版本,
它们有着类似的功能:将指定项添加到 System.Web.Caching.Cache 对象,该对象具有依赖项、
过期和优先级策略以及一个委托(可用于在从 Cache 移除插入项时通知应用程序)。
然而,它们有一点小的区别:当要加入的缓存项已经在Cache中存在时,
Insert将会覆盖原有的缓存项目,而Add则不会修改原有缓存项。
也就是说:如果您希望某个缓存项目一旦放入缓存后,就不要再被修改,那么调用Add确实可以防止后来的修改操作。
而调用Insert方法,则永远会覆盖已存在项(哪怕以前是调用Add加入的)。
从另一个角度看,Add的效果更像是 static readonly 的行为,而Insert的效果则像 static 的行为。
注意:我只是说【像】,事实上它们比一般的static成员有着更灵活的用法。
由于缓存项可以让我们随时访问,看起来确实有点static成员的味道,但它们有着更高级的特性,
比如: 缓存过期(绝对过期,滑动过期),缓存依赖(依赖文件,依赖其它缓存项),
移除优先级,缓存移除前后的通知等等。 后面我将会分别介绍这四大类特性。
//////////////////////////////////////////////////////////////////////////////////////////////
public void Insert(string key, object value);
public void Insert(string key, object value, CacheDependency dependencies);
public void Insert(string key, object value, CacheDependency dependencies,
DateTime absoluteExpiration, TimeSpan slidingExpiration);
// 将对象与依赖项策略、到期策略和优先级策略
// 以及可用来在从缓存中移除项【之前】通知应用程序的委托一起插入到 Cache 对象中。
// 注意:此方法受以下版本支持:3.5 SP1、3.0 SP1、2.0 SP1
public void Insert(string key, object value, CacheDependency dependencies,
DateTime absoluteExpiration, TimeSpan slidingExpiration,
CacheItemUpdateCallback onUpdateCallback);
}