基本用法
using System.Web.Caching
DataSet ds
=
new
DataSet();
//
Cache.Insert(
"
Data
"
,ds);
将DataSet中的数据缓存,不设置过期时间。
Cache.Insert("Data",ds,null,DateTime.Now.AddMinutes(2),TimeSpan.Zero);
绝对时间过期,缓存在2分钟后将过期。
Cache.Insert(
"
Data
"
,ds,
null
,DateTime.MaxValue,TimeSpan.FromMinutes(
2
));
平滑时间过期,缓存在连续2分钟没有访问则过期。
Cache.Add方法也可添加缓存,但只能添加缓存中没有项,有则失败,但不出异常;而Cache.Insert方法能覆盖原来的重复项。
缓存依赖
CacheDependency cd
=
new
CacheDependency (Server.MapPath(
"
myFile.txt
"
));
DataSet ds
=
new
DataSet ();
//
Cache.Insert (
"
Data
"
,ds,cd);
myFile.txt文件被修改后,缓存失效,否则缓存一直存在。
缓存更新策略
一般做法:
DataSet ds
=
new
DataSet();
//
if
(Cache[
"
Data
"
]
==
null
)

{
ds = GetData();
Cache.Insert("Data", ds, null, DateTime.Now.AddMinutes(2), TimeSpan.Zero);
}
else

{
ds = (DataSet)Cache["Data"];
}
此为被动更新,如果缓存为空,则为数据库获取数据,如果缓存不为空,则直接从缓存中获取数据。缺点就是如果缓存失效时,去访问数据得从数据库中查询,花费时间。可以利用缓存的回调功能让缓存过期后自动续建,实现自动更新的目的。
protected
void
CacheCallback(
string
key,
object
value, CacheItemRemovedReason remov)

{
//缓存过期处理方法
}
DataSet ds
=
new
DataSet();
//
Cache.Insert(
"
Data
"
, ds,
null
, DateTime.Now.AddMinutes(
2
), TimeSpan.Zero, CacheItemPriority.Default, CacheCallback);
缓存过期时回调用CacheCallback方法实现自动更新。
发表评论 取消回复