ASP.Net缓存总结及分析
2012-06-30 10:48:36 来源:WEB开发网指定缓存项目优先级
可以指定CacheItemPriority枚举类型任意值。
配置缓存
详细信息查看Msdn Caching元素
5.使用SQL缓存依赖
Asp.net Framework支持两种类型的SQL缓存依赖:拉和推。第一种模式使用表轮询的 ASP.NET 实现,第二种模式使用 SQL Server 2005 的查询通知功能。可以对任何最近版本的Ms SQL Server,包括Ms SQL server 2005 Express、Ms SQL Server 2000 和 Ms SQL Server 7.0,使用拉SQL缓存依赖。第二种类型推缓存依赖则只能用于Ms SQL Server 2005和Ms SQL server 2005 Express,因为他们依赖SQL Server的Service Broker。
使用拉SQL缓存依赖
实质上拉SQL缓存依赖使用数据库tigger,当表被修改时,tigger被触发,名为AspNet_SqlCacheTablesForChangeNotification的数据表的一行数据被更新,来记录修改情况,Asp.net Framework使用一个后台线程,来定期拉数据表的修改信息。如果有修改,则依赖于数据表的缓存项目被移除。
配置拉SQL缓存依赖:
1、必须对一个或多个数据库表启用SQL缓存依赖。
可以使用框架中的SqlCacheDependencyAdmin类来配置SQL数据库支持拉SQL缓存依赖,由于调用该类的方法需要创建表、存储过程、trigger,出于安全考虑,Asp.net进程并不应该被赋予这些权限,而是通过一个命令行工具来使用此类。
aspnet_regsql 详细信息访问Msdn ASP.NET SQL Server 注册工具 (Aspnet_regsql.exe)
简要步骤: 1、启用特定数据库的SQL缓存依赖。
aspnet_regsql -c "Data Source=localhost;integrated Security=True;Initial Catalog=Pubs" -ed
2、启用特定表的SQL缓存依赖。
aspnet_regsql -c "Data Source=localhost;integrated Security=True;Initial Catalog=Pubs" -ed -t Titles
2、必须在Web配置文件中配置SQL缓存依赖。
<!-- caching section group -->
<caching>
<sqlCacheDependency enabled = "true" pollTime = "1000" > //通过pollTime 的设置,定时拉数据库的修改
<databases>
<add name="Northwind"
connectionStringName="NorthwindConnectionString1"
pollTime = "1000"
/>
</databases>
</sqlCacheDependency>
</caching>
a、 对页面输出缓存使用拉SQL缓存依赖:<%@ OutputCache%>指令指定sqlDependency属性值:库名和表名(Mydatabase:Mytable);
b、对DataSource控件使用拉SQL缓存依赖:为DataSource控件sqlDependency属性指定值:库名和表名(Mydatabase:Mytable);
c、对Cache对象使用拉SQL缓存依赖:
void Page_Load()
{
DataTable dt=(DataTable)Cache["dtkey"];
if(dt==null)
{
dt=getdtFromDB(); //此处调用方法从数据库中返回数据项DataTable
SqlCacheDependency sqlDepend=new SqlCacheDependecy("Mydatabase","Mytable");
Cache.Insert("dtKey",dt,sqlDepend);
}
GridView1.DataSource=dt;
GridView1.DataBind();
}
private DataTable getdtFromDB()
{
//略......
}
使用推SQL缓存依赖
通过Service Broker可以在数据库中的数据变更时自动给应用程序发送一个消息。
好处:Asp.net应用程序不必定时拉数据库的修改。
缺点:查询类型有诸多限制(如必须使用两部分的表明:abo.mytabel,查询必须包含一个显示的列名表明:不能使用*,不能引用视图、临时表等,不能包含子查询、外连接、子连接,不能引用大对象、不能使用DISTINCT、COMPUTE、COMPUTE BY、INSERT关键字、不能包含许多聚合函数 等等)
- ››ASP.NET及JS中的cookie基本用法
- ››ASP.NET获取MS SQL Server安装实例
- ››asp.net实现调用百度pai 在线翻译英文转中文
- ››ASP.NET页面选项进行提示判断
- ››Asp.net定时执行程序
- ››ASP.NET中利用DataList实现图片无缝滚动
- ››ASP.NET验证控件RequiredFieldValidator
- ››ASP.NET中使用System.Net.Mail发邮件
- ››ASP.NET中获取用户控件中控件的ID
- ››ASP.NET中FileBytes写成文件并存档
- ››asp获取毫秒数
- ››asp.net报“INSERT INTO 语句的语法错误解决
更多精彩
赞助商链接