asp.net中SqlCacheDependency缓存技术概述


本文实例讲述了asp.net中SqlCacheDependency缓存技术,对于大型web程序设计来说具有很高的实用价值。具体如下:

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

建立缓存依赖,实现代码如下:

/**//// <summary> 
/// 建立缓存依赖项 
/// </summary> 
/// <returns></returns> 
private AggregateCacheDependency TableDependency() 
{ 
AggregateCacheDependency dependency = new AggregateCacheDependency(); 
dependency.Add(new SqlCacheDependency("MSPetShop4", "表名称")); 

return dependency; 
} 

一个非常简单的方法,首先我们先看看两个.NET 2.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" connectionStringName="LocalConnString" pollTime="10000"/></databases>中配置了数据库信息,SqlCacheDependency类会自动完成对此配置节信息的读取以建立和数据库之间的联系。(注意)name="MSPetShop4"必须和new SqlCacheDependency("MSPetShop4", "表名称")中的数据库名称相一致。更多的配置信息可以查看(MSDN帮助文档)。

使数据库支持SqlCacheDependency特性:

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

使用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 -S localhost -E -d MSPetShop4 -ed 
以上面的命令为例,说明将对名为MSPetShop4的数据库采用SqlCacheDependency功能,且SQL Server采用了windows集成验证方式。我们还可以对相关的数据表执行aspnet_regsql命令,如:

aspnet_regsql -S localhost -E -d MSPetShop4 -t Item -et 
aspnet_regsql -S localhost -E -d MSPetShop4 -t Product -et 
aspnet_regsql -S localhost -E -d MSPetShop4 -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; 
}

希望本文所述缓存技术对大家asp.net程序设计有所帮助。



相关阅读:
Git上一些修改错误操作的命令使用技巧
JS控制日期显示的小例子
各浏览器对document.getElementById等方法的实现差异解析
Win10系统自由设置时间对电脑进行重启的方法
MSSQL产生死锁的根本原因及解决方法
android图像绘制(七)ClipRect局部绘图/切割原图绘制总结
Bootstrap carousel轮转图的使用实例详解
部分Win10用户遭遇闪屏问题致电脑不能正常使用 微软提供解决方法
win10如何关闭完成字符串?Win10输入提示完成字符串的三种解决方法
iOS应用开发中使用Auto Layout来适配不同屏幕尺寸
jQuery多项选项卡的实现思路附样式及代码
DBA应该知道的一些关于SQL Server跟踪标记的使用
js获取本机操作系统类型的两种方法
HTML5 Canvas实现文本对齐的方法总结
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 CMS SQL jQuery C# C++ java Android IOS oracle MongoDB PostgreSQL SQLite 交通频道
吐鲁番-合肥  惠州-景宁、泰顺  朔州-绥德  无锡-江阴西门  石家庄-蟒石口  清远-阳山  成都-重庆  北京-上海  温州-椒江区  唐山-水厂  丽水-三门县  佛山-高明  绵阳-建中  七台河-依兰  乌海-苏米图  山南-泰州  杭州-海盐  宁波-金华  德阳-绵远  上海-张家港(沙州)  北京-商水  南阳-栗盘  沈阳-郑州  北京-高碑店  中山-德庆  天津-阳信  福州-宁德  台州-温州  深圳-广州  厦门-下伍堡  赣州-南平  河源-龙川至珠海  郑州-开封  深圳-南宁  长沙-双峰  重庆-丰盛  南阳-镇平  海西-武汉  黄石-赣州  清远-清新温泉  中山-大良  上海-敖江  邢台-毛庄  庆阳-石家庄  北京-凤山  广州-勒流  江门-广州芳村  大同-河北柴沟堡  成都-乐至  南安-石狮  北京-集宁  温州-宁波  新余-建山  承德-七家/旺上店  丽水-三门县  铁岭-杨屯(阿吉)  泸州-海潮  南京-宜兴  成都-黑水  广州-福建福州  郑州-宁陵  邢台-大鲁  遂宁-长沙  洛阳-孟州  深圳-深圳宝安国际机场  珠海-深圳  无锡-宜兴  福州-平阳  厦门-温岭  衡水-码头李  临沂-新沂  南昌-莲花  珠海-开平长沙  广州-邵阳(邵东)  汕尾-海丰县  台州-安福  广州-三灶  深圳-常平  唐山-龙山  天津-林西  宁波-柯桥  长沙-津市  北京-宁津  洛阳-郑州  无锡-张家港  广州-乔建  上海-杭州  汕头-福州  安庆-蚌埠  沈阳-法库(西)  邢台-沙村  苏州-义鸟-永康  北京-霸州  淮安-上海  济宁-梁山  武汉-宜都  重庆-永川  深圳-祁东  南阳-西张营  广州-中山沙溪  开封-周口  深圳-容奇  开封-商丘  绍兴-绍兴  邢台-高屯  焦作-济源  深圳-广州  淮安-青岛  丹东-振安区  金坛-南京  温州-义乌  日照-临沭  衡水-周胡刘  酒泉-高台  盘锦-大连  上海-昆山  江门-井岸  邢台-德归  晋城-晋庙铺镇  上海-无为  济南-新安江  杭州-德清  上海-泰兴  台州-黄岩  深圳-东莞  广州-乐民  渭南-周口  金华-永康  佛山-江门  南阳-桐柏  云浮-珠海  随州-珠海  杭州-海宁  徐州-南通  阳江-珠海  深圳-太平  惠州-惠东  唐山-滦县  无锡-张家港  唐山-马兰庄  南昌-金溪  杭州-瓜沥  韶关-始兴  潍坊-兖州  衢州-玉环  广州-湖南隆回  南昌-涟源  芜湖-溧阳  泉州-兴国  中山-惠州  江门-阳江  西双版纳-呼和浩特  驻马店-郑州  深圳-南充  白山-江源区  内江-高梁  普洱-淮安  杭州-兰溪  重庆-太和(老路)  宁波-余姚  佛山-虎门  唐山-滦县  上海-温州  广州-澳门  中山-揭阳汽车站  上海-慈溪  金华-石浦  北京-宣化区  上海-吴堡  齐齐哈尔-托力河  德州-聊城  无锡-张家港  重庆-隆盛  嘉峪关-泰州  南阳-驻马店  焦作-沂源县  北京-盐城  济源-侯马  镇江-汉府街  唐山-康关营  江门-恩平  江门-长沙(粤)  南阳-李富户  吉安-安福  丽水-三门县  淮南-炎刘  邢台-深县  广州-钦州  桂林-平乐  韶关-灵溪  丽水-三门县  郑州-鲁恭庙  济南-黄岛  南阳-沙堰  东莞-江西全南汽车站  洛阳-渑池  南京-新沂  洛阳-登封  苏州-震泽  厦门-永定

Copyright © 2016 phpStudy |