16.缓存(Cache)
- 如果每次进入页面的时候都查询数据库生成页面内容的话,如果访问量非常大,则网站性能会非常差。而如果只有第一次访问的时候才查询数据库生成页面内容,以后都直接输出内容,则能提高系统性能,这样无论有多少人访问都只访问一次数据库。
- 缓存是一种用空间换取时间的技术,存在于计算机中很多地方,用来将一些慢速设备中的常用数据保存在快递设备中,取数据的时候直接从快速设备中取。比如CPU的二级缓存、windows文件读取缓存。
- 缓存存在失败的问题:为了保存从缓存中读取数据和慢速数据中数据一致,则需要在慢速数据中对应的数据发生变化的时候清除缓存中相应的数据。
- 缓存是改进网站性能的第一个手段,就像索引是改进数据库性能的第一个手段一样。Asp.net缓存主要分为页面缓存、数据湖缓存和数据缓存这三种主要类型。
页面缓存:
- 经页面添加<%@ OutputCache Duration="15" VaryByParam="none" %>标签就可以启用页面缓存,这样整个页面的内容都会被缓存,页面中的Asp.net 代码、数据源在缓存期间都不会被运行,而是直接输出缓存的页面内容。Duration表示缓存时间,以秒为单位,超过这个时间则缓存失效,再次生成以后会再缓存15秒,以此类推。
- 缓存是针对所有这个页面的访问者,这样1个访问者和1万个访问者、一次访问和100万次访问对数据库的压力都是一样的。
- 对于看新闻页面来讲,如果如上设置的话,则会缓存在第一个看到的新闻,因为?id=2, ?id=3只是页面的不同参数而已,为了能让不用的新闻各自缓存,因此可以设置 VaryByParam="id",表示对于不同的id参数进行单独缓存。如果有多个确定缓存的参数,则将参数名用分号隔开即可,如VaryByParam="id;number"
- 如果想让任何不同的查询字符串都创建不同的缓存,则设置VarByParam="*",一般情况下设置"*"就足够
- 在WebUserControl中也可以像页面缓存一样设置控件的缓存。
数据源缓存:
- 设定ObjectDataSource的CacheDuration(缓存时间:秒),EnableCaching=True,这样每隔CacheDuration指定的时间段才调用SelectMethod指定的方法来执行数据库查询,其它时候都是直接返回缓存的数据,CacheDuration默认是Infinite,表示永久缓存,要改成数字就可。
- 缓存固定的时间适用于首页、文章列表等访问频繁的页面,对于看贴页面则不适合,假设有100万个帖子,如果第个帖子都是固定缓存1小时的话,假设一小时内有10万个帖子被看了,那就要缓存10万个帖子,非常占用内存,因为“百年看贴”的“坟贴”偶然被访问一次也缓存一个小时占用内存。这时候可以采用“滑动窗口”策略,比如帖子缓存10分钟,如果10分钟之内又访问了,则缓存失效时间修改为从被访问这一刻起的10分钟,以此类推。这样经常访问的帖子就可以“长期缓存”,而不经常访问的帖子也不会因为偶然访问而长期占用缓存,设置方法,数据源的CacheExpirationPolicy="Sliding".
数据缓存:
- 和Cookie有点语法相似,如 HttpContext.Current.Cache["id"] = "22";
16.缓存(Cache)的更多相关文章
- [.net 面向对象程序设计进阶] (15) 缓存(Cache)(二) 利用缓存提升程序性能
[.net 面向对象程序设计进阶] (15) 缓存(Cache)(二) 利用缓存提升程序性能 本节导读: 上节说了缓存是以空间来换取时间的技术,介绍了客户端缓存和两种常用服务器缓布,本节主要介绍一种. ...
- POCO库——Foundation组件之缓存Cache
缓存Cache:内部提供多种缓存Cache机制,并对不同机制的管理缓存策略不同实现: ValidArgs.h :ValidArgs有效键参数类,模板参数实现,_key:键,_isValid:是否有效, ...
- [.net 面向对象程序设计进阶] (14) 缓存(Cache) (一) 认识缓存技术
[.net 面向对象程序设计进阶] (14) 缓存(Cache)(一) 认识缓存技术 本节导读: 缓存(Cache)是一种用空间换时间的技术,在.NET程序设计中合理利用,可以极大的提高程序的运行效率 ...
- .Net自带缓存Cache的使用
对于数据比较大,经常要从数据库拿出来用的,可以考虑使用.Net自带的缓存Cache,简单好用: //向内存中插入一个缓存 System.Web.HttpRuntime.Cache.Insert(&qu ...
- 缓存Cache
转载自 博客futan 这篇文章将全面介绍有关 缓存 ( 互动百科 | 维基百科 )cache以及利用PHP写缓存caching的技术. 什么是缓存Cache? 为什么人们要使用它? 缓存 Cach ...
- Java 中常用缓存Cache机制的实现
所谓缓存,就是将程序或系统经常要调用的对象存在内存中,一遍其使用时可以快速调用,不必再去创建新的重复的实例.这样做可以减少系统开销,提高系统效率. 所谓缓存,就是将程序或系统经常要调用的对象存在内存中 ...
- Java 中常用缓存Cache机制的实现《二》
所谓缓存,就是将程序或系统经常要调用的对象存在内存中,一遍其使用时可以快速调用,不必再去创建新的重复的实例.这样做可以减少系统开销,提高系统效率. AD: Cache 所谓缓存,就是将程序或系统经常要 ...
- YII缓存Cache
缓存Cache 定义:将数据暂时存放在一个存储速度更快的介质上,下次读取数据时就可以从这个介质上来读取数据 介质:内存.文件.数据库(优化好的数据库) Yii缓存的分类:(framework/cach ...
- ASP.NET缓存 Cache
缓存介绍 如果每次进入页面的时候都查询数据库生成页面内容的话,如果访问量非常大,则网站性能会非常差,而如果只有第一次访问的时候才查询数据库生成页面内容,以后都直接输出内容,则能提高系统性能,这样无论多 ...
- ASP.NET状缓存Cache的应用-提高数据库读取速度
原文:ASP.NET状缓存Cache的应用-提高数据库读取速度 一. Cache概述 既然缓存中的数据其实是来自数据库的,那么缓存中的数据如何和数据库进行同步呢?一般来说,缓存中应该存放改 ...
随机推荐
- Enable Access Logs in JBoss 7 and tomcat--转
JBoss 7 is slightly different than earlier version JBoss 5 or 6. The procedure to enable access logs ...
- JSP-标准动作标记
JSP标准动作标记 在客户请求JSP页面时,JSP动作利用XML语法格式的标记来控制Servlet引擎的行为.利用JSP动作可以动态地插入文件.重用JavaBean组件.把用户重定向到另外的页面.为J ...
- alloc、init你弄懂50%了吗?
前言 这是一篇我记录对alloc.init分析思考的笔记.如果读者想看懂我的第二个思考,可能需要您至少了解内存的分段分页管理,如果您对其一点都不知道,可以先看这篇软文简单了解一下.另外很重要的一点是, ...
- 编写android的widget
以前对这个东西很感兴趣,因为确实方便,如今有时间了来做一个例子 首先要定义一个layout(widgetview.xml)和一个配置文件(widgetconfig.xml) <?xml vers ...
- Microsoft Windows Server 2008 R2 IIS7.5安装指南
一.IIS安装步骤: 1.安装Windows Server 2008 R2(见 附录一) 2.配置计算机名称和IP地址(见 附录一) 3.配置成员服务器(见 附录一) 4.点击任务栏上的“服务器管理器 ...
- 第六篇:python高级之网络编程
python高级之网络编程 python高级之网络编程 本节内容 网络通信概念 socket编程 socket模块一些方法 聊天socket实现 远程执行命令及上传文件 socketserver及 ...
- (转)JavaScript判断浏览器类型及版本
IE 只有IE支持创建ActiveX控件,因此她有一个其他浏览器没有的东西,就是ActiveXObject函数.只要判断window对象存在ActiveXObject函数,就可以明确判断出当前浏览器是 ...
- js substr和substring字符串截取
substr(start,length)第一个参数是开始位置(注:start的开始是从0开始,看到好多博客上面是从1开始,在火狐和谷歌执行了一下是从0开始),第二个参数是截取字符串的长度(可以省略,表 ...
- Oracle11g数据库导入到oracle10g的解决方法
我想有很多人在工作和学习中遇到这样的一个问题,Oracle数据库服务器版本和本机版本不一致问题,你的本机要是比服务器的版本要高的话还好,如果你本机是10g服务器是11g的话,从11g导出来的数据库是导 ...
- Android Listview with different layout for each row
http://stackoverflow.com/questions/4777272/android-listview-with-different-layout-for-each-row 其关键在重 ...