Go homepage(回首页)
Upload pictures (上传图片)
Write articles (发文字帖)

The author:(作者)qq
published in(发表于) 2014/7/9 1:39:07
asp.net2.0页面数据缓存的应用实例

asp.net2.0页面数据缓存的应用实例

页面数据缓存

应用程序数据缓存提供了一种编程方式,可通过键/值将任意数据存储在内存中。使用应用程序缓存与使用应用程序状态类似。但是,与应用程序状态不同的是,应用程序数据缓存中的数据是容易丢失的,即数据并不是在整个应用程序生命周期中都存储在内存中。

应用程序数据缓存的优点是由ASP.NET管理缓存,它会在项过期、无效或内存不足时移除缓存中的项,还可以配置应用程序缓存,以便在移除项时通知应用程序。

ASP.NET中提供了类似于Session的缓存机制,即页面数据缓存。利用数据缓存,可以在其中保存各种对象。对于各个应用程序来说,数据缓存只是在应用程序内共享,并不能在应用程序间进行共享。Cache类用于实现Web应用程序的缓存,在Cache中存储数据最简单的方法如下:

Cache["Key"]=Value;

从缓存中取数据时,需要先判断缓存中是否有内容,其方法如下:

Value=(string)Cache["key"];

If(Value!=null)

{

//do something

}

注意:从Cache中得到的对象是一个object类型的对象,因此在通常情况下,需要进行强制类型转换。

Cache类有两个很重要的方法,Add和Insert方法,其语法格式如下:

public Object Add[Insert] (

string key,

Object value,

CacheDependency dependencies,

DateTime absoluteExpiration,

TimeSpan slidingExpiration,

CacheItemPriority priority,

CacheItemRemovedCallback onRemoveCallback

)

参数说明如下所示。

key :用于引用该项的缓存键。

value:要添加到缓存的项。

dependencies:该项的文件依赖项或缓存键依赖项,当任何依赖项更改时,该对象即无效,并从缓存中移除。如果没有依赖项,则此参数可以设置为null。

absoluteExpiration:过期的绝对时间。

slidingExpiration:最后一次访问所添加对象时与该对象过期时之间的时间间隔。

priority:缓存的优先级,由CacheItemPriority枚举表示。缓存的优先级共有6种,从高到低依次是NotRemoveable、High、AboveNormal、Normal、BelowNormal和Low。

OnRemoveCallback:在从缓存中移除对象时所调用的委托(如果没有,可以设置为null)。当从缓存中删除应用程序的对象时,它将会被调用。

Insert方法声明与Add方法类似,但Insert方法为可重载方法。其结构如表1所示。



表1 Insert重载方法列表

Insert方法中,CacheDependency是指依赖关系,DateTime是有效时间,TimeSpan是创建对象的时间间隔。

下面通过示例来讲解Insert方法的使用。

例如,将文件中的xml数据插入缓存,在以后请求时无需从文件读取该数据。Cache Dependency的作用是确保缓存在文件更改后立即到期,以便可以从文件中提取最新数据,重新进行缓存。如果缓存的数据来自若干个文件,还可以指定一个文件名的数组。代码如下:

Cache.Insert("key", myXMLFileData, new

System.Web.Caching.CacheDependency(Server.MapPath("users.xml")));

例如,插入键值为 key 的第二个数据块(取决于是否存在第一个数据块)。如果缓存中不存在名为key的键,或者与该键相关联的项已到期或被更新,那么dependentkey 的缓存条目将到期。代码如下:

Cache.Insert("dependentkey", myDependentData, new

System.Web.Caching.CacheDependency(new string[] {}, new string[]

{"key"}));

下面是一个绝对到期的示例,此示例将对受时间影响的数据缓存1min,1min过后,缓存将到期。

注意:绝对到期和滑动到期不能一起使用。

程序代码如下:

Cache.Insert("key", myTimeSensitiveData, null,

DateTime.Now.AddMinutes(1), TimeSpan.Zero);

下面是一个绝对滑动到期的示例,此示例将缓存一些频繁使用的数据。数据将在缓存中一直保留,除非数据未被引用的时间达到了1min。代码如下:

Cache.Insert("key", myFrequentlyAccessedData, null,

System.Web.Caching.Cache.NoAbsoluteExpiration,

TimeSpan.FromMinutes(1));




If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)





QQ:154298438
QQ:417480759