- 浏览: 237589 次
- 性别:
- 来自: 葡萄牙
文章分类
最新评论
-
lightbulb:
...
jQuery中的动画与效果 -
kendezhu:
opportunity 写道 谢谢kendezhu分享,今天正 ...
jQuery 获取和设置select下拉框的值 -
opportunity:
谢谢kendezhu分享,今天正好用上了!
jQuery 获取和设置select下拉框的值
http://www.cnblogs.com/ltp/archive/2009/06/30/1514311.html
缓存是把应用程序中需要频繁,快速访问,但又不经常改变的数据保存在内存中的编程技术,可以提高网络响应速度。是由Cache类来管理的。
ASP.NET3.5中的数据库缓存依赖
数据库缓存依赖由SqlCacheDependency类管理,其优点有:
1.由于用户请求的数据被保存在内存中而不是数据库中,所以访问速度快。
2.可以单独缓存页面中某一控件(一般为数据源控件)的数据,而其他控件不受影响。
3.当数据库中数据发生改变时,会删除内存中相应的缓存数据并向Cache中添加修改后的数据。
要使用数据库缓存依赖(仅限轮询缓存依赖)需要先配置数据库:
1.在web.config的system.web下添加节点如下
<caching>
<sqlCacheDependency enabled="true" pollTime="1000">
<databases>
<add connectionStringName="ConnectionString" name="Database1" pollTime="1000"/>
</databases>
</sqlCacheDependency>
</caching>
开启数据库缓存依赖并且每1秒钟轮询一次数据表(实现了上面说的优点3)
connectionStringName指定了连接字符串的名字 name指定了数据库名字
2.为SQLServer启用缓存通知,有两种方法
一是在VS命令行里使用aspnet_regsql.exe
aspnet_regsql -S .\SQLEXPRESS -E -d Database1 -t Student -ed -et (Student为表名)
注意\的方向,另外无法使用aspnet_regsql.exe为App_Data 数据库文件启用缓存通知(见下面第2个荐)
参数的解释见http://kendezhu.iteye.com/blog/840907的Session
更多http://www.cnblogs.com/weiyuxinghuacun/archive/2010/08/27/1810143.html|荐
http://www.cnblogs.com/systemxgl/archive/2011/01/24/1942875.html|荐(原理)
二是在Page_Load中添加如下代码
System.Web.Caching.SqlCacheDependencyAdmin.EnableTableForNotifications
(ConfigurationManager.ConnectionStrings["连接名"].ConnectionString,"表名");
不应该在ASP.NET页面中使用SqlCacheDependencyAdmin类,因为调用该类的方法需要创建表,存储过程和trigger
。出于安全考虑,ASP.NET进程不应该被赋予这些权限。实质上使用aspnet_regsql.exe也是通过
SqlCacheDependencyAdmin类在数据库中创建AspNet_SqlCacheTablesForChangeNotification数据库表,及为启动缓存通知的表创建trigger,创建一些存储过程等(但起码不是在程序中创建)。
数据库缓存依赖分为两种
1.轮询缓存依赖(ASP.NET应用程序需要定时地轮询数据库的修改来更新缓存)
以上配置就是针对轮询缓存依赖的配置
可以在一个用户控件中使用<%@ OutputCache %> 指令来使用轮询缓存依赖。也就是说,可以使用轮询缓存依赖来
实现部分页面缓存。
2.推缓存依赖(数据库修改后会通知ASP.NET应用程序来更新缓存,不支持数据库文件)
不能对包含<%@ OutputCache %>指令的用户控件使用推SQL缓存依赖。也就是说,不能对部分页面缓存使用推缓存
依赖。
Microsoft SQL Server 2005包含一个名为查询通知的功能,它在后台使用Microsoft SQL Server 2005的Service
Broker。这个Service Broker可以在数据库中的数据变更时自动给ASP.NET应用程序发送一个消息。
相比于轮询缓存依赖,使用推缓存依赖的好处是ASP.NET应用程序不必定时地轮询数据库的修改。如果有修改,数据库会通知应用程序。
但使用推缓存依赖的查询类型有诸多限制,见第2个荐的4.6.6
要使用推缓存依赖需要做的配置有:
1.为推缓存依赖配置数据库
启用Microsoft SQL Server 2005 Service Broker。使用SELECT name, is_broker_enabled FROM
sys.databases来检查Service Broker是否已经为特定的数据库激活。使用ALTER DATABASE 数据库名 SET
ENABLE_BROKER来为特定的数据库激活。最后,ASP.NET进程必须有足够的权限来订阅查询通知。当一个ASP.NET页
面由IIS处理时,页面在NT Authority WET WORK SERVICE账号(对于Windows Server 2003或Vista)或者ASPNET账号(对于其他操作系统,如Windows XP)上下文中执行。
执行下面的SQL命令能给YOURSERVER服务器上的本地ASPNET账号赋予需要的权限:
GRANT SUBSCRIBE QUERY NOTIFICATIONS TO "YOURSERVER\ASPNET"
2.为推缓存依赖配置应用程序
在应用程序可以接收到变更通知之前,必须启用查询通知监听器。可以在Global.asax文件中启用监听器。
<%@ Application Language=”C#” %>
<%@ Import Namespace=”System.Data.SqlClient” %>
<%@ Import Namespace=”System.Web.Configuration” %>
<script runat=”server”>
void Application_Start(object sender, EventArgs e)
{
// Enable Push SQL cache dependencies
string conString = WebConfigurationManager.ConnectionStrings
["连接名"].ConnectionString;
SqlDependency.Start(conString);
}
</script>
Application_Start事件处理程序只在应用程序刚开始运行时执行一次。SqlDependency.Start()方法使用一个数
据库的连接字符串调用。
现在来使用一下轮询缓存依赖
1.对数据源控件使用轮询缓存依赖
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ExamOnlineConnectionString %>"
SelectCommand="SELECT * FROM [students]" EnableCaching="True" CacheDuration="10"
SqlCacheDependency="ExamOnline:students"></asp:SqlDataSource>
只要按照上面的说法正确的进行了轮询缓存依赖的配置,再在此设置一下数据源控件的属性即可:
EnableCaching:为此数据源控件启动缓存
CacheDuration:数据源控件里这次读取的数据可以被缓存的时间,单位是秒
SqlCacheDependency:此缓存依赖于哪个表,多个表需用分号隔开
ASP.NET每次去轮询数据库如果数据表发生了改变,不管到没到CacheDuration该缓存就会被更新。
2.对整个页面使用轮询缓存依赖
<%@ OutputCache SqlDependency="ExamOnline:students" Duration="1000" VaryByParam="none"%>
SqlDependency:此缓存依赖于哪个表,多个表需用分号隔开
Duration:整个页面的数据可以被缓存的时间,单位是秒
ASP.NET每次去轮询数据库如果数据表发生了改变,不管到没到Duration该缓存就会被更新。
但由于是整个页面都会被缓存直到到了Duration或所依赖的数据库表有变化才能更新这个缓存,所以个人感觉这样会令很多"无辜的"其他与该数据表无关的控件受到牵连,所以个人不提倡使用整夜缓存。
3.对数据(Datatable等)使用轮询缓存依赖,见第2个荐的4.6.5
发表评论
-
ASP.NET报表技术
2011-08-01 00:39 2201水晶报表 我们先来看看在ASP.NET中使用水晶报表需 ... -
异常处理和日志追踪
2010-12-21 12:25 1212关于异常的处理想必 ... -
ASP.NET状态管理
2010-12-13 16:10 1287开发WinFrom的程序员可能不会在意维护应用程序 ... -
关于aspx页面类继承于cs页面类
2010-10-19 17:01 4853cs页面类继承自System.Web.UI.Page类,一般和 ... -
使用数据库文件
2010-10-14 19:55 856以前很多项目都是连接的SQLServer数据库里的数据库 ... -
C#与Javascript中时间的格式化操作
2010-09-15 16:41 1572C#里时间格式化 一般的DateTime.Now.ToStr ... -
ASP.NET页面生命周期
2010-08-25 02:53 860http://www.cnblogs.com/KingStar ... -
获得漂亮的Flash|Javascript钟表代码
2010-08-24 16:06 1562http://www.clocklink.com ht ... -
ASP.NET登录控件延伸(个性化)
2010-08-24 03:06 1830既然由登录控件涉及到了Membership,那么就不得不 ... -
程序集(类库,java里也叫类库,对于NetBean位于其库里)与命名空间(相当于java里的包)
2010-08-23 21:23 1476http://book.51cto.com/art/20090 ... -
Temporary ASP.NET Files
2010-08-23 21:05 701http://book.51cto.com/art/20090 ... -
webapplication与website
2010-08-22 16:59 864http://blog.csdn.net/ups216/arc ... -
概念,依旧是概念……csproj文件是做什么用的?
2010-08-22 16:37 1429csproj是.net项目文件的后缀名,它是C Sharp P ... -
web application中使用Profile应该注意的问题
2010-08-22 14:04 636http://hi.baidu.com/windlhj/blo ... -
.Net 2.0 中的发送邮件实现C#代码
2010-08-19 16:15 1519http://hi.baidu.com/ganggang021 ... -
GridView 设置格式化 DataFormatString
2010-08-08 00:23 790http://www.cnblogs.com/emanlee/ ... -
利用 CSS Friendly Control Adapters 将 ASP.NET 控件转为符合WEB标准的、有语意的HTML页面 CSS 样式表控制。
2010-08-02 19:57 887http://www.cnblogs.com/wilsonwu ... -
App_data,App_code, bin,App_Browser,App_Themes,App_GlobalResources,App_LocalResou
2010-08-02 19:52 848http://blog.csdn.net/jjjjj10231 ... -
ASP.NET中的站点导航技术
2010-07-29 16:31 22101.站点地图 (站点地图文件) 是一个名为Web ... -
DropDownList1_SelectedIndexChanged不执行
2010-07-26 15:52 1063http://blog.sina.com.cn/s/blog_ ...
相关推荐
ASP.NET中缓存技术(Cache)的了解运用(项目案例一个) ASP.NET中缓存技术(Cache)的了解运用(项目案例一个) ASP.NET中缓存技术(Cache)的了解运用(项目案例一个)
ASP.NET_缓存技术 ASP.NET_缓存技术
asp.net页面缓存:片断缓存,数据缓存
asp.net缓存技术 详解 让你快速掌握asp.net缓存技术
ASP.NET 2.0快速入门(5):ASP.NET 2.0 缓存技术
ASP.NET缓存技术源码及PPT ASP.NET缓存技术源码及PPT
Asp.net 缓存技术总结,如何提高页面访问速度,如何快速打开大数据量页面?
ASP.NET 2.0 缓存技术,有效提高速度
作为.Net框架下开发Web应用程序的主打产品,ASP.NET充分考虑了缓存机制。通过某种方法,将系统需要的数据对象、Web页面存储在内存中,使得Web站点在需要获取这些数据时,不需要经过繁琐的数据库连接、查询和复杂的...
看一看,ASP.NET数据缓存例子,不错哟。
描述了ASP.NET现有的各种缓存技术实现,附有示例代码。
涵盖了以下主要内容:C#语法知识、C#的面向对象特性、ASP.NET数据绑定技术、高级数据绑定控件、缓存和异步访问、LINQ语言集成查询、成员管理技术、自定义成员提供者、角色和授权、在ASP.NET中整合WCF编程、在ASP.NET...
asp.net页面缓存技术(Cache、XML) 概述ASP.NET缓存机制
Asp.net 视频 缓存技术
包括认识ASP.NET 2.0、ASP.NET 2.0网页语法、字符串与日期处理、Page对象、...中的应用、高性能数据处理技术、ADO.NET数据库技术、数据绑定控件、ASP.NET数据缓存技术、站点导航和导航控件、Web用户控件、创建ASP.NET...
ASP.NET 缓存:方法和最佳实践,讲解如何在ASP.NET下使用缓存技术
Asp.net的缓存技术用于对网页里的经常被人访问的内容进行缓存,这样当用户第二次访问时就会速度的访问到您的页面