加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

.Net 2.0 缓存使用

发布时间:2020-12-12 16:01:07 所属栏目:MsSql教程 来源:网络整理
导读:.Net? 2.0 ?缓存使用 ?????在访问量大,但更新较少的网站中使用缓存,可以大大提高运行效率;加上.NET? 2 .0提供的缓存依赖机制,我们可以很方便的对缓存进行管理更新;以下是本人学习的一点心得体会,希望能够起到抛砖引玉的作用。 建立缓存依赖: ??????? /*

.Net?2.0?缓存使用


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


建立缓存依赖:


???????
/**/ /**/ /**/ ///?<summary>

????????
///?建立缓存依赖项

????????
///?</summary>

????????
///?<returns></returns>

???????? private ?AggregateCacheDependency?TableDependency()

????????...
{

????????????AggregateCacheDependency?dependency?
=?new?AggregateCacheDependency();

????????????dependency.Add(
new?SqlCacheDependency("MSPetShop4",?"表名称"));


????????????
return?dependency;

????????}

?一个非常简单的方法,首先我们先看看两个.NET?.0新增的两个类:


AggregateCacheDependency在System.Web.Caching命名空间中,?AggregateCacheDependency主要作用是用于组合?ASP.NET?应用程序的?Cache?对象中存储的项和?CacheDependency?对象的数组之间的多个依赖项。


SqlCacheDependency也存在于System.Web.Caching命名空间中,这个类用于建立ASP.NET应用程序的Cache对象中存储的项和特定SQL?Server数据库表之间的联系。


SqlCacheDependency是如何建立Cache对象中存储的项和特定SQL?Server数据库表之间的联系的呢?看一下Web.Config配置文件就一目了然了。

<? xml?version="1.0" ?>

< configuration? xmlns ="http://schemas.microsoft.com/.NetConfiguration/v2.0" >

?
< connectionStrings >

??
< add? name ="LocalConnString" ?connectionString ="Server=(Local);uid=sa;pwd=123456;DataBase=MSPetShop4" />

?
</ connectionStrings >

?
< system .web >

??
< caching >

???
< sqlCacheDependency? enabled ="true" ?pollTime ="10000" >

????
< databases >

?????
< add? name ="MSPetShop4" ?connectionStringName ="LocalConnString" ?pollTime ="10000" />

????
</ databases >

???
</ sqlCacheDependency >

??
</ caching >

??
< compilation? debug ="true" />

????????
</ system.web >

</ configuration >

配置节<databases><add?name="MSPetShop4?connectionStringNameLocalConnString?pollTime10000/></>中配置了数据库信息,SqlCacheDependency类会自动完成对此配置节信息的读取以建立和数据库之间的联系。(注意)name必须和new


SqlCacheDependency(,?表名称)中的数据库名称相一致。更多的配置信息可以查看(MSDN帮助文档)。


使数据库支持SqlCacheDependency特性:


要使得7.0或者2000版本的SQL?Server支持SqlCacheDependency特性,需要对数据库服务器执行相关的配置步骤。有两种方法配置SQL?Server:


使用aspnet_regsql命令行工具,或者使用SqlCacheDependencyAdmin类。


aspnet_regsql工具位于WindowsMicrosoft.NETFramework[版本]文件夹中,如果要配置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?
S?localhost?E?d?MSPetShop4?ed


以上面的命令为例,说明将对名为MSPetShop4的数据库采用SqlCacheDependency功能,且SQL?Server采用了windows集成验证方式。我们还可以


对相关的数据表执行aspnet_regsql命令,如:

aspnet_regsql?
t?Item?et

aspnet_regsql?
t?Product?t?Category?et

最后为使用缓存:

?

protected ? void ?Page_Load( object ?sender,?EventArgs?e)

????????...
{

????????????
if?(!IsPostBack)

????????????...
{

????????????????
string?key?=?"TableCache";?//缓存名称

????????????????DataSet?data?=?(DataSet)HttpRuntime.Cache[key];?//获取缓存


????????????????
//?判断缓存数据为空

????????????????if?(data?==?null)

????????????????...
{

????????????????????
//?获取数据

????????????????????data?=?GetDataSource();?


????????????????????
//?创建缓存依赖

????????????????????AggregateCacheDependency?cd?=?TableDependency();


????????????????????
//?创建缓存

????????????????????HttpRuntime.Cache.Add(key,?data,?cd,?DateTime.Now.AddHours(1),?Cache.NoSlidingExpiration,?


CacheItemPriority.High,?
null);

????????????????}


????????????????GridView1.DataSource?
=?data;?//绑定数据

????????????????GridView1.DataBind();

????????????}

????????}

获取数据源的方法,结合实际使用做修改。

?

private ?DataSet?GetDataSource()

????????...
{

????????????
string?ConnectionStringLocal?=?ConfigurationManager.ConnectionStrings["LocalConnString"].ConnectionString;

????????????SqlConnection?connPubs?
=?new?SqlConnection(ConnectionStringLocal);

????????????SqlDataAdapter?dad?
=?new?SqlDataAdapter("Select?TOP?50?*?FROM?Product",?connPubs);

????????????DataSet?ds?
=?new?DataSet();

????????????dad.Fill(ds);


????????????
return?ds;

????????}

就这么简单:)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读