.NET中的缓存
来源:互联网 发布:软件信息安全认证 编辑:程序博客网 时间:2024/05/16 09:10
今天学习了.net中的缓存,试着做了一下,感觉还不错。
主要是用HttpRuntime.Cache,AggregateCacheDependency和SqlCacheDependency来缓存数据。
首先页面上有个GridView绑定了数据库中的UserInfo表,在用户第一次请求此页面时,数据从数据库中查询出来,并把数据添加到Cache中,之后此页面的请求都从Cache中取数据,直到数据库中Userinfo表的数据更改已后,自动从Cache中移除数据,然后在下一次请求的时候,从数据库中查询数据,并把数据添加到Cache中。
代码如下,aspx页面代码就不贴出来了,就是一个GridView。
- //页面加载
- protected void Page_Load(object sender, EventArgs e)
- {
- if (!IsPostBack&&!IsAsync)
- {
- this.FillDate();
- }
- }
- //填充数据
- private void FillDate()
- {
- string name = txtName.Text.Trim();
- this.GridView1.DataSource = this.GetDataSource(name);
- this.GridView1.DataBind();
- }
- /// <summary>
- /// 获得数据源
- /// </summary>
- /// <param name="name"></param>
- /// <returns></returns>
- private DataTable GetDataSource(string name)
- {
- DataTable dt = (DataTable)HttpRuntime.Cache["aa"];
- //如果缓存中没有数据,将从数据库中查询出数据,并把数据添加至缓存
- if (dt == null)
- {
- DBL.IDBOperator db = DBL.DBConncetion.DBInstance;
- string sql = "SELECT uid, username, upwd, name, gender, address, tel FROM [userinfo] WHERE name like '%" + name + "%'";
- dt = db.GetDataTable(sql, CommandType.Text);
- //数据库连接字串
- String strConString = ConfigurationManager.ConnectionStrings["studbConnectionString"].ConnectionString;
- //检索数据库中开启了更改通知的表名
- string[] tableList = SqlCacheDependencyAdmin.GetTablesEnabledForNotifications(strConString);
- if (!tableList.Contains("userinfo"))
- {
- //启用userinfo表的更改通知
- SqlCacheDependencyAdmin.EnableTableForNotifications(strConString, "userinfo");
- }
- //要缓存的数据
- SqlCacheDependency sqlCache = new SqlCacheDependency("studb", "userinfo");
- //建立缓存依赖
- AggregateCacheDependency aggCache = new AggregateCacheDependency();
- aggCache.Add(sqlCache);
- //把数据加入缓存
- HttpRuntime.Cache.Add("aa", dt, aggCache, DateTime.Now.AddMinutes(60), System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.Default,null);
- }
- return dt;
- }
这样做的好处是在查询数据时避免反复打开和关闭数据连接。
注意:
(1)在Web.config还要加入如下节点:
<caching>
<sqlCacheDependency pollTime="10000">
<databases>
<add name="studb" connectionStringName="studbConnectionString" pollTime="10000"/>
</databases>
</sqlCacheDependency>
</caching>
(2)默认情况下,SQL Server 2005 数据库不启用服务中介程序。 必须使用 ALTER DATABASE 命令为每个数据库启用服务中介程序。
若要通过使用 SQL Server Management Studio 在 AdventureWorks 数据库上启用 Service Broker,请执行下面的 Transact-SQL 语句:
ALTER DATABASE AdventureWorks SET ENABLE_BROKER;
(3)不能使用Windows帐户。
- asp.net中的缓存
- .NET中的缓存
- asp.net中的缓存
- .NET中的缓存
- .Net中的缓存问题
- .NET 中的缓存技术
- asp.net中的缓存技术
- nopCommerce/.net 中的缓存技术
- .Net中的缓存依赖配置
- .NET中的缓存技术概览
- ASP.NET中的图片缓存
- ASP.NET 缓存_ASP.NET 缓存中的新增功能
- ASP.NET 缓存_ASP.NET 缓存中的新增功能
- .net中的缓存技术(一)
- ASP.NET 2.0中的页面输出缓存
- ASP.NET 2.0中的页面输出缓存
- ASP.NET 2.0 中的缓存操作
- ASP.NET 2.0 中的缓存功能
- Word公式编辑器快速上手指南(二)
- 测试MySql连接是否正常
- vs2008的宏
- void , void*的使用探悉
- TCP/IP-15-TFTP
- .NET中的缓存
- 七个受用一生的心理寓言
- C/C+语言struct深层探索
- 关于“Server2003远程登录连接数限制”的解决方案
- NSIS入门程序实例,麻雀虽小,五脏俱全
- PHP上传
- IBM助力南京市玄武区完成“数字玄武”规划主体建设
- 如何在putty中显示日文的方法
- Flash memory 101: An Introduction to NAND flash