高速缓存是服务器端状态,它类似于应用程序状态,因为它在所有的客户端上共享。高速缓存与应用程序状态的区别是,
告诉缓存要灵活的多:定义状态何时失效有许多方式。我们不是给每个请求读取文件或数据库,而是把数据存储在高速缓存
中。
对于高速缓存,需要使用System.Web.Caching名称空间中的Cache类。给高速缓存添加对象的过程如下:
Cache.Add("mycache", obj, null, DateTime.MaxValue, TimeSpan,FromMinutes(10), CacheItemPriority.Normal, null)
Page类的Cache属性返回一个Cache对象,使用Cache类的Add()方法,可以把任意对象赋予高速缓存。Add()方法的
第一个参数定义了高速缓存项的名称。第二个参数是应被高速缓存的对象。第三个参数定义了依赖关系,例如,高速缓存
可以依赖于一个文件:当文件改动时,高速缓存对象就会失效。上面的例子中没有定义依赖关系,因为这个参数为null。
第4和第5个参数用于设置高速缓存项的有效时间。第四个参数定义了高速缓存项失效的绝对时间。第五个参数定义了使
高速缓存项失效的相对时间。在这个时间过后,就不能再访问高速缓存了。上面的示例使高速缓存10分钟后失效。
第六个参数定义了高速缓存的优先级。CacheItemPriority是一个设置高速缓存优先级的枚举。如果ASP.NET工作进程
有很高的内存利用率,ASP.NET运行库就根据优先级删除高速缓存项。优先级较低的项先删除。最后一个参数用于定义一个
方法,在删除高速缓存项时调用该方法。当高速缓存依赖于一个文件,就可以使用最后一个参数:当文件改变时,就删除高速
缓存项,调用事件处理程序。通过这个事件处理程序,可以再次读取文件,重新加载高速缓存。
可以通过索引符读取高速缓存项,在使用从Cache属性返回的对象之前,必须检查结果是否为null,当高速缓存失效时,
结果就是null。如果从Cache索引符返回的不是null,就可以对返回的对象进行类型转换,用于存储高速缓存项。
object o = Cache["mycache"];
if(o == null)
{
// Reload the cache.
}
else
{
// Use the cache
MyClass myObj=(MyClass)o;
}