C#基础回顾:Asp.net 缓存
2009-03-22 20:12
369 查看
缓存的作用
你买电脑的时候,是否会在意CPU的二级缓存?是不是希望二级缓存能够大点?那你有没有想过你为什么会有这种想法?说到底,就是为了性能问题,如果缓存大点,那就意味着我们处理数据的响应速度会更快。这就好比我们查字典,如果有一个单词,你需要知道它的意思,你是不是需要翻开字典,查找目录,翻到指定的页,找到你要的单词,这才能得到该词的解释?可是不幸的是,你并没有想要去记住这个词,当第二次遇到这个词的时候,你是不是又得重复一遍上述的动作?如果你当时记住这个单词,那是不是马上就能知道这个词的意思了?这是不是很高效?
缓存的缺点
如果让你在一个信息无法传达的地方(比如原始森林)呆上几个月,而这几个月中,发生了很多变化,其中之一就是你上次查询的那个单词由于某些特殊的原因,它的解释被更换了。而你显然不知道这个事情,如果此时此刻,让你解释这个单词,你是不是会闹笑话?这是什么原因呢?很简单,因为你的脑海里只保存着上次的解释,而没有及时得到更新。
进入正题(本人并未深入研究,如有不足之处,希望大家不吝赐教)
示例1:
你希不希望你的动态网站也有一个可以记忆的大脑?可能某些朋友会觉得可笑,“这有必要吗?” 。如果你的网站牵涉到大量的数据交互,而这些数据被更新的频率又不是很高,比如有些提供新闻资讯的站点,可能就只需要在上午9:00前对新闻进行更新,而后就不需要再更改了。那也就是说9点后用户访问所得到的数据都是一样的。但是,因为没有提供缓存的能力,用户的每次访问,仍旧会导致服务器端对数据库的访问,这会不会很影响性能?
在Asp.net webform中可以通过配置页面指令OutputCache来实现效果。在你的aspx文件的头部加入如下的语句:
最后修改OutputCache指令中的Duration为"999999"用来表示无限,再加入一个属性SqlDependency,设置该属的值为"database,tableName"。其中database为Web.config 中 <add> 元素的name 属性中指定的数据库名。以Northwind的products表为例就应该写作:SqlDependency="Northwind:products"。如果有两张表就写作:database:tableName;database2:tableName2。
如果一切配置结束,就可以看效果了。你会发现只有当数据被更新的时候,才会更新缓存。这个效果显然比前面几种方式来得更好,但是也不能过渡的使用这种方式,毕竟轮询还是会负出一些代价的。
[注,上述配置过程中所涉及到的一些数据库名称、表名称,大小写一定要前后一致,否则可能会编译失败。]
示例打包下载
参考:
1.苏鹏老师讲的“asp.net2.0缓存与性能”
2.vs2005入门 之 Substitution [视频]
3.Asp.net 缓存技术总结
4.将 ASP.NET 输出缓存与 SQL Server 结合使用
5.使用 SQL 缓存依赖项
你买电脑的时候,是否会在意CPU的二级缓存?是不是希望二级缓存能够大点?那你有没有想过你为什么会有这种想法?说到底,就是为了性能问题,如果缓存大点,那就意味着我们处理数据的响应速度会更快。这就好比我们查字典,如果有一个单词,你需要知道它的意思,你是不是需要翻开字典,查找目录,翻到指定的页,找到你要的单词,这才能得到该词的解释?可是不幸的是,你并没有想要去记住这个词,当第二次遇到这个词的时候,你是不是又得重复一遍上述的动作?如果你当时记住这个单词,那是不是马上就能知道这个词的意思了?这是不是很高效?
缓存的缺点
如果让你在一个信息无法传达的地方(比如原始森林)呆上几个月,而这几个月中,发生了很多变化,其中之一就是你上次查询的那个单词由于某些特殊的原因,它的解释被更换了。而你显然不知道这个事情,如果此时此刻,让你解释这个单词,你是不是会闹笑话?这是什么原因呢?很简单,因为你的脑海里只保存着上次的解释,而没有及时得到更新。
进入正题(本人并未深入研究,如有不足之处,希望大家不吝赐教)
示例1:
你希不希望你的动态网站也有一个可以记忆的大脑?可能某些朋友会觉得可笑,“这有必要吗?” 。如果你的网站牵涉到大量的数据交互,而这些数据被更新的频率又不是很高,比如有些提供新闻资讯的站点,可能就只需要在上午9:00前对新闻进行更新,而后就不需要再更改了。那也就是说9点后用户访问所得到的数据都是一样的。但是,因为没有提供缓存的能力,用户的每次访问,仍旧会导致服务器端对数据库的访问,这会不会很影响性能?
在Asp.net webform中可以通过配置页面指令OutputCache来实现效果。在你的aspx文件的头部加入如下的语句:
<connectionStrings> <add name="NorthwindConnectionString" connectionString="Data Source=1AC425E4D0B74F1\msserver;Initial Catalog=Northwind;Integrated Security=True" providerName="System.Data.SqlClient" /> </connectionStrings>
最后修改OutputCache指令中的Duration为"999999"用来表示无限,再加入一个属性SqlDependency,设置该属的值为"database,tableName"。其中database为Web.config 中 <add> 元素的name 属性中指定的数据库名。以Northwind的products表为例就应该写作:SqlDependency="Northwind:products"。如果有两张表就写作:database:tableName;database2:tableName2。
如果一切配置结束,就可以看效果了。你会发现只有当数据被更新的时候,才会更新缓存。这个效果显然比前面几种方式来得更好,但是也不能过渡的使用这种方式,毕竟轮询还是会负出一些代价的。
[注,上述配置过程中所涉及到的一些数据库名称、表名称,大小写一定要前后一致,否则可能会编译失败。]
示例打包下载
参考:
1.苏鹏老师讲的“asp.net2.0缓存与性能”
2.vs2005入门 之 Substitution [视频]
3.Asp.net 缓存技术总结
4.将 ASP.NET 输出缓存与 SQL Server 结合使用
5.使用 SQL 缓存依赖项
相关文章推荐
- [转]C#基础回顾:Asp.net 缓存
- ASP.NET Boilerplate 学习 AspNet Core2 浏览器缓存使用 c#基础,单线程,跨线程访问和线程带参数 wpf 禁用启用webbroswer右键菜单 EF Core 2.0使用MsSql/MySql实现DB First和Code First ASP.NET Core部署到Windows IIS QRCode.js:使用 JavaScript 生成
- 十四个ASP.NET基础知识问答(C#版)
- C# ASP.NET 按比例缩小代码(基础版)
- 十四个ASP.NET基础知识问答(C#版)
- asp.net ajax1.0基础回顾(二):经典模式
- Cache缓存 (asp.net c#)
- 十四个ASP.NET基础知识问答(C#版)
- asp.net ajax1.0基础回顾(六):调用ASPX页面方法 推荐
- 十四个关于ASP.NET基础知识问答(C#版)
- 从DataView中生成Excel报表的方案(C#) - 清清月儿 .NET万花筒 Asp.net技术 Asp.net教程 Asp.net源码 Asp.net基础 Asp.net控件 Asp.net入门 - CSDNBlog
- ASP.NET MVC 学习笔记-2.Razor语法 ASP.NET MVC 学习笔记-1.ASP.NET MVC 基础 反射的具体应用 策略模式的具体应用 责任链模式的具体应用 ServiceStack.Redis订阅发布服务的调用 C#读取XML文件的基类实现
- Asp.net(C#)-显示所有缓存 清除所有缓存
- asp.net 基础知识回顾1-response对象的write和redirect方法
- ASP.NET中在线用户统计 application和cache实现缓存的差异 ASP.net 验证码(C#)
- 十四个ASP.NET基础知识问答(C#版)
- C# ASP.NET 缓存
- Ajax 基础 (asp.net C#)
- Asp.net 基础8(自定义控件之缓存)
- ASP.NET MVC 教程 -使用输出缓存提高性能(C#)