缓存机制:.NET 2.0缓存依赖机制讲解



在访问量大,但更新较少网站WebSite中使用缓存Cache,可以大大提高运行效率;加上.NET2.0提供缓存Cache依赖机制我们可以很方便对缓存Cache进行管理更新;以下是本人学习点心得体会体会希望能够起到抛砖引玉作用www.
建立缓存Cache依赖:

/**////<summary>
///建立缓存Cache依赖项
///</summary>
///<s></s>
privateAggregateCacheDependencyTableDependency
{
AggregateCacheDependencydependency=AggregateCacheDependency;
dependency.Add(SqlCacheDependency(\"MSPetShop4\",\"表名称\"));

dependency;
}


个非常简单思路方法首先我们先看看两个.NET2.0新增两个类:
AggregateCacheDependency在.Web.Caching命名空间中AggregateCacheDependency主要作用是用于组合ASP.NET应用Cache对象中存储项和CacheDependency对象的间多个依赖项
SqlCacheDependency也存在于.Web.Caching命名空间中这个类用于建立ASP.NET应用Cache对象中存储项和特定SQLServer数据库表的间联系
SqlCacheDependency是如何建立Cache对象中存储项和特定SQLServer数据库表的间联系呢?看下Web.Config配置文件就目了然了
<?xmlversion=\"1.0\"?>
<configurationxmlns=\"http://schemas.microsoft.com/.NetConfiguration/v2.0\">
<connectionStrings>
<addname=\"LocalConnString\"connectionString=\"Server=(Local);uid=sa;pwd=123456;DataBase=MSPetShop4\"/>
</connectionStrings>
<system.web>
<caching>
<sqlCacheDependencyenabled=\"true\"pollTime=\"10000\">
<databases>
<addname=\"MSPetShop4\"connectionStringName=\"LocalConnString\"pollTime=\"10000\"/>
</databases>
</sqlCacheDependency>
</caching>
<compilationdebug=\"true\"/>
</system.web>
</configuration>

配置节<databases><addname=\"MSPetShop4\"connectionStringName=\"LocalConnString\"pollTime=\"10000\"/></databases>中配置了数据库信息SqlCacheDependency类会自动完成对此配置节信息读取以建立和数据库的间联系(注意)name=\"MSPetShop4\"必须和 [Page]
SqlCacheDependency(\"MSPetShop4\",\"表名称\")中数据库名称相更多配置信息可以查看(MSDN帮助文档)
使数据库支持SqlCacheDependency特性:
要使得7.0或者2000版本SQLServer支持SqlCacheDependency特性需要对数据库服务器执行相关配置步骤有两种思路方法配置SQLServer:
使用aspnet_regsql命令行工具或者使用SqlCacheDependencyAdmin类
aspnet_regsql工具位于Windows\\Microsoft.NET\\Framework\\[版本]文件夹中,如果要配置SqlCacheDependency则需要以命令行方式执行
以下是该工具命令参数介绍说明:
-?显示该工具帮助功能;
-S后接参数为数据库服务器名称或者IP地址;
-U后接参数为数据库登陆用户名;
-P后接参数为数据库登陆密码;
-E当使用windows集成验证时使用该功能;
-d后接参数为对哪个数据库采用SqlCacheDependency功能;
-t后接参数为对哪个表采用SqlCacheDependency功能;
-ed允许对数据库使用SqlCacheDependency功能;
-dd禁止对数据库采用SqlCacheDependency功能;
-et允许对数据表采用SqlCacheDependency功能;
-dt禁止对数据表采用SqlCacheDependency功能;
-lt列出当前数据库中有哪些表已经采用sqlcachedependency功能
比如在petshop4.0数据库中使用SqlCacheDependency特性:aspnet_regsql-Slocalhost-E-dMSPetShop4-ed
以上面命令为例介绍说明将对名为MSPetShop4数据库采用SqlCacheDependency功能且SQLServer采用了windows集成验证方式我们还可以
对相关数据表执行aspnet_regsql命令如:
aspnet_regsql-Slocalhost-E-dMSPetShop4-tItem-et
aspnet_regsql-Slocalhost-E-dMSPetShop4-tProduct-et
aspnet_regsql-Slocalhost-E-dMSPetShop4-tCategory-et
最后为使用缓存Cache:


protectedvoidPage_Load(objectsender,EventArgse)


{
(!IsPostBack)
{
key=\"TableCache\";//缓存Cache名称
DataSetdata=(DataSet)HttpRuntime.Cache[key];//获取缓存Cache [Page]

//判断缓存Cache数据为空
(datanull)
{
//获取数据
data=GetDataSource;

//创建缓存Cache依赖
AggregateCacheDependencycd=TableDependency;

//创建缓存Cache
HttpRuntime.Cache.Add(key,data,cd,DateTime.Now.AddHours(1),Cache.NoSlidingExpiration,

CacheItemPriority.High,null);
}

GridView1.DataSource=data;//绑定数据
GridView1.DataBind;
}
}



获取数据源思路方法结合实际使用做修改

privateDataSetGetDataSource
{
ConnectionStringLocal=ConfigurationManager.ConnectionStrings[\"LocalConnString\"].ConnectionString;
SqlConnectionconnPubs=SqlConnection(ConnectionStringLocal);
SqlDataAdapterdad=SqlDataAdapter(\"SELECTTOP50*FROMProduct\",connPubs); [Page]
DataSetds=DataSet;
dad.Fill(ds);

ds;
}

就这么简单:)
Tags:  .net缓存 清除dns缓存 二级缓存 缓存机制

延伸阅读

最新评论

发表评论