WebForm.aspx缓存(Cache)

缓存(Cache)
1,如果每次进入页面的时候都查询数据库而生成页面内容的话,如果访问量非常大
则网站性能会非常差,如果只有第一次访问的时候才查询数据库而生成页面内容。以后都直接输出内容。则能提高系统的性能。这样无论有多少人访问都只访问一次数据库。所以数据库的压力不变(即:即便再多人访问页面,也不会对数据库造成压力)

缓存是一中利用空间换取时间的技术,存在与计算机中的很多地方,用来将一些慢速设备中的常用数据保存在快速设备中,取数据的时候直接冲快速设备中取。比如Cpu的二级缓存,windows文件读取缓存

缓存存在失效的问题。为了保证从缓存中读取数据和慢速设备中数据一致,则需要在慢速设备中数据发生变化的时候,清除缓存中相应的数据。

缓存是改进网站性能的第一手段,就像索引是改进数据库性能的第一个手段一样。asp.net缓存主要分为:页面缓存,数据源缓存,数据缓存这三种主要的类型

//-------------------------------------------------------------------页面缓存

页面缓存:
给页面添加<%@ OutputCache Duration="15" VaryByParam="none"%>标签就可以启用页面缓存,这样整个页面的内容都会被缓存。页面中的Asp.net代码,数据源在缓存期间都不会被运行,而是直接输出缓存的页面内容。Duration表示缓存时间,一秒为单位。超过这个事件则缓存失效,再次生成以后会在缓存15秒,以此类推。而
注:如果看缓存的效果的话,可以在Page_Load处设置断点,然后修改数据库数据,启动调试,看你缓存后,你在15秒内你刷新页面,看Page_Load会不会被执行,和你修改数据库数据后,你刷新页面数据会不会更新。答案是:在缓存的15秒内,再次刷新页面Page_Load不会不执行。既然代码都没被执行,所以你修改数据库数据后,刷新页面后的数据也不会更新。所以你15秒前开始缓存,15内,不管多少用户访问,和刷新页面看到的内容都是一样的。

缓存是针对所有这个页面的访问者。这样1个访问者和1万个访问者,一次访问和100w万次访问素对数据库的严厉是一样的

http://locahost:2619/viewNews.aspx?id=1
对于看新闻页面来讲,如果如上设置的话,它缓存的是第一个页面,也就是(即缓存的是http://locahost:2619/viewNews.aspx?id=1),它不会考虑http://locahost:2619/viewNews.aspx?id=1与http://locahost:2619/viewNews.aspx?id=2有什么不同。因为 ?id=2,?id=3只是页面的不同参数而已,为了能让不同的新闻各自缓存,因此可以设置VaryByParam="id",
即:<%@ OutputCache Duration="15" VaryByParam="id"%>表示对于不同的id参数进行单独缓存,如果有多个确定缓存的参数,则将参数名用分号隔开即可。比如:VaryByParam="id,number"。

如果想让任何不同的查询字符串都创建不同的缓存,则设置VaryByParam="*",一般情况下设置"*"就足够。

在WebUserControl中页可以像页面缓存一样设置控件的缓存。

页面缓存的作用:假设我在页面中添加了这么一段代码<%@ OutputCache Duration="15" VaryByParam="none"%>
那么当第一个客户来访问我的页面的时候,我就将整个页面缓存了。那么在15秒之内,所有客户缓存我这个页面的时候都是直接读取我缓存里面的数据(即缓存的页面)它并没有调用我的Page_Load代码。(所以说,这15秒内所有的客户看的内容都是一样的,当过了15后,这个缓存失效了。它又执行一次Page_Load,然后重新开始缓存)

<%@ OutputCache Duration="15" VaryByParam="none"%>中的VaryByParam="none"表示不考虑参数,只要是这个页面我就给你缓存15秒。
<%@ OutputCache Duration="15" VaryByParam="id"%>,表示考虑参数,根据参数的不同id来缓存。即:一个网站(http://locahost:2619/viewNews.aspx)可以很多个页面(http://locahost:2619/viewNews.aspx?id=1) 比如第一个页面的id是1,第二个页面的id是2,那么我就会根据页面id的不同来缓存。即每个页面都有缓存

//-------------------------------------------------------------------数据源缓存

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"></asp:ObjectDataSource> :注:ObjectDataSource是webForm.aspx中的一个控件。在工具箱,数据里可以拖进页面
数据源缓存:
设定ObjectDataSource的CacheDuration(缓存时间:秒),EnableCaching=true。这样每隔CacheDuration指定的时间段才会调用SelectMethod指定的方法来执行数据库的查询。其他时候都是直接返回缓存的数据。
注:CacheDuration的默认值为Infinite 即无限期,可以给它设为你要的缓存时间,例如CacheDuration="15" 即:<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"  CacheDuration="15">

缓存固定的时间适用于首页,文章列表等访问频繁的页面。对于看帖页面则不适合。假设有100万个帖子,如果每个帖子都是固定缓存1个小时的话,假设一个小时之内10万个帖子被看了,那么就要缓存10万个帖子,非常占用内存。因为“百年一年的”的帖子偶然被访问一次也缓存一个小时,非常占用内存。这时候可以采用“滑动窗口”策略,比如:帖子缓存10分钟,如果10分钟之内又访问了,则缓存的失效时间修改为从被访问这一刻起的10分钟之后。以此类推。这样经常访问的忒子就可以“长期缓存”,而不经常访问的帖子也不会因为偶然访问而长期占用缓存。
设置方法,数据源:CacheExpirationPolicy="Sliding"

时间: 2024-08-11 02:28:35

WebForm.aspx缓存(Cache)的相关文章

[.net 面向对象程序设计进阶] (14) 缓存(Cache) (一) 认识缓存技术

[.net 面向对象程序设计进阶] (14) 缓存(Cache)(一) 认识缓存技术 本节导读: 缓存(Cache)是一种用空间换时间的技术,在.NET程序设计中合理利用,可以极大的提高程序的运行效率. 本节将介绍如何利用缓存写出高效率的代码. 1. 什么是缓存(Cache)? 缓存(Cache)是一种用空间换取时间的技术 存在于计算机中很多地方,用来将一些慢速设备中的常用数据保存在快速设备中,取数据的时候直接从快速设备中取. 比如CPU二级缓存.内存.windows文件读取缓存. 2. .NE

缓存(Cache)

什么是缓存? web应用程序可被多个用户访问.当用户少,负载低时,可提供快速的访问.当负载成倍增加时,响应就慢下来了.服务器响应慢是高负载网站最常见的问题.为了解决这个问题,我们常采用升级硬件配置,负载均衡,增加带宽等措施.但下载并不是响应慢的唯一原因.我们需要提供一种加快数据访问的机制,进而提升网站的性能.缓存提供了这种解决方案.缓存是种技术.我们可以把频繁使用的数据缓存或把网页临时缓存在本地硬盘为了以后再次访问.在大量用户访问一个站点或一个用户多次访问站点时,缓存技术能加快响应.缓存可以出现

HttpResponseCache的使用缓存cache

为什么要用cache? 我们可以通过传递类似上次更新时间这样的参数来制定查询某些数据.同样,在下载图片的时候,server那边最好能够减少图片的大小,而不是让我们下载完整大小的图片. 之前我们在软件开发中,cache都是自己来写,不管是图片缓存还是其他从网络获取的数据,有了HttpResponseCache,它帮助我们可以很好的解决cache这个问题(我现在感觉他只适合cache一些小的数据,如果大量的图片cache还是自己缓存到SD卡上面去比较好). HttpResponseCache的好处:

ASP.NET缓存 Cache

缓存介绍 如果每次进入页面的时候都查询数据库生成页面内容的话,如果访问量非常大,则网站性能会非常差,而如果只有第一次访问的时候才查询数据库生成页面内容,以后都直接输出内容,则能提高系统性能,这样无论多少人访问都只访问一次数据库,数据库压力不变缓存是一种用空间换取时间的技术,存在于计算机中很多地方,用来将一些慢速设备中的常用数据保存在快速设备中,取数据的时候直接从快速设备中取,比如CPU二级缓存,WINDOWS文件读取缓存缓存存在失效的问题:为了保证从缓存中读取数据和慢速数据中数据一致,则需要在慢

POCO库——Foundation组件之缓存Cache

缓存Cache:内部提供多种缓存Cache机制,并对不同机制的管理缓存策略不同实现: ValidArgs.h :ValidArgs有效键参数类,模板参数实现,_key:键,_isValid:是否有效,此外提供key获取键.isValid是否键有效,invalidate使得键值无效:默认情况下键为有效: KeyValueArgs.h :KeyValueArgs键值参数对类,模板参数实现,_key:键,_value:键值:此外提供key获取键,value获取键值: EventArgs.h :事件参数

asp.net,缓存Cache

缓存Cache: 1>直接使用Cache["content"],缓存与Session不同,所有用户都可以共享.永不过期,由服务器自己维护,当内存不够时,会将老的缓存释放掉. 2>设置绝对过期日期.Cache.Insert("nowTime", DateTime.Now, null, DateTime.Now.AddSeconds(7), TimeSpan.Zero); 3>设置滑动过期日期: Cache.Insert("nowTime&q

WebForm.aspx 页面通过 AJAX 访问WebForm.aspx.cs类中的方法,获取数据(转)

WebForm.aspx 页面通过 AJAX 访问WebForm.aspx.cs类中的方法,获取数据 WebForm1.aspx 页面 (原生AJAX请求,写法一) <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="IsPostBack.WebForm1" %> <!DOCTYPE htm

网页的缓存Cache与控制

什么是缓存 Cache? 缓存位于客户端与服务器之间, 或者服务器与服务器之间.它决定是否保存所获资源的副本,以及如何使用副本,何时更新副本,这里所说的资源包括页面的HTML, 图片,文件等等. 使用缓存主要有2大理由: 减少响应延迟,让页面显示更快:因为缓存比源服务器离客户端更近, 如果直接从缓存而不是源服务器响应客户的请求,耗时更少,让网站看上去响应更快: 减少网络带宽消耗:当副本被重用时,减少了从源服务器获取资源的次数,从而减少带宽消耗. 缓存如何工作? 所有的缓存都遵循以下基本规则 保留

Java 中常用缓存Cache机制的实现

所谓缓存,就是将程序或系统经常要调用的对象存在内存中,一遍其使用时可以快速调用,不必再去创建新的重复的实例.这样做可以减少系统开销,提高系统效率. 所谓缓存,就是将程序或系统经常要调用的对象存在内存中,一遍其使用时可以快速调用,不必再去创建新的重复的实例.这样做可以减少系统开销,提高系统效率. 缓存主要可分为二大类: 一.通过文件缓存,顾名思义文件缓存是指把数据存储在磁盘上,不管你是以XML格式,序列化文件DAT格式还是其它文件格式: 二.内存缓存,也就是实现一个类中静态Map,对这个Map进行