ASP.Net缓存总结及分析
2012-06-30 10:48:36 来源:WEB开发网1.为推SQL缓存依赖配置数据库
启用Ms SQL Server 2005 Service Broker:
a、可以通过:Select name ,is_broker_enabled from sys_databases,查询是否对特定的数据库激活。
b、通过:Alter Database MyBase Set ENABLE_BROKER,启用。
c、为本地AspNet帐号赋予需要的权限,如:Grant Subscribe Query Notifications To “yourserver\Aspnet”
也就是说sql缓存暂时只支持ms sql server 2005或以上,他们才有依赖通知。否则缓存无效。
2.为推SQL缓存依赖配置应用程序
void Application_Start(object sender, EventArgs e)
{
string conString=WebConfigurationManager.ConnectionStrings["MyContention1"].ConnectionString;
SqlDependency.Start(conString);
HttpContext context=HttpContext.Current;
context.Cache.Insert(
"key",DateTime.Now,null,DateTime.MaxValue,Cache.NoSlidingExpiration,CacheItemPriority.NotRemovable,null
);
}
a、对页面输出缓存使用推SQL缓存依赖:
当缓存整个Asp.net页面时,可以使用推Sql缓存依赖。如果包含在页面上的任何Sql命令的结果有变动,页面就会自动从缓存中过期。
SqlCommand对象包含一个NotificationAutoEnlist属性,该属性默认值为true。当NotificationAutoEnlist启用时,页面和命令间自动创建一个推缓存依赖。注意SqlDataSource的SelectCommand必须符合查询要求。
b、对DataSource控件使用推SQL缓存依赖:
只需要设置SqlcacheDependency属性即可。设置SqlCacheDependency=“CommandNotification”
c、对Cache对象使用推SQL缓存依赖:
void Page_Load()
{
DataTable dt=(DataTable)Cache["dtkey"];
if(dt==null)
{
string conString=WebConfigurationManager.ConnectionStrings["MyContention1"].ConnectionString;
SqlDatadapter dad=new SqlDataAdapter("Select a,b From dbo.Mytable",conString); //注意查询符合要求
SqlCacheDependency sqlDepend=new SqlCacheDependecy(dad.SelectCommand);
dt=new DataTable();
dad.Fill(dt);
Cache.Insert("dtKey",dt,sqlDepend);
}
GridView1.DataSource=dt;
GridView1.DataBind();
}
注意,SqlCacheDependency类的示例被创建了。一个SqlCommand对象被传递给SqlCacheDependency类的构造函数。如果SqlCommand的结果变化了,则这个DataTable会自动从缓存中失效。这些命令的顺序很重要。必须在执行该命令之前创建SqlCacheDependency对象。如果在创建SqlCacheDependency对象之前调用Fill()方法,则依赖会被忽略。
至此,有关缓存的总结,已经结束,本章只包含了一些知识要点,具体应用还要是情况对待。
- ››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 语句的语法错误解决
更多精彩
赞助商链接