一、页面缓存:
在ASP.NET 中有两种WEB缓存技术,一种是输出缓存,另一种是数据缓存!
输出缓存是指把一次请求所产生的动态输出保存于内存中。而页面缓存就属于输出缓存,就是把整个页面缓存起来,如果一个ASP.NET站点存取次数很多的话,而把一些常用到的页面放入内存会带来性能上的提高,因为只要请求页面被缓存起来之后,以后所以对页面的请求(GET和HEAD请求),就不会创建编译页面实例,而是直接从内存中获取!
缺省情况下,输出缓存选项是被打开的,但不是任意的页面都讲被缓存,需要显示的指定哪些页面需要被缓存!缓存后的页面,对于GET和HEAD请求将直接从缓存入口中取出返回给用户,而对页面的回传(POST请求)通常是重新动态的生成页面,即重新加载,和GET.HEAD请求不一样,这点要注意!!
输出缓存有页面缓存的过期/有效时间策略,即一个页面如果被指定60秒的缓存时间,那在这60秒内,页面缓存在内存中,如果超过60秒,则该页面缓存在内存中被清楚,这种方式的过期策略称之为“强制过期”。
页面输出缓存设置方式有2种:一种是高级设置,一种是低级设置
高级设置是通过PAGE指令,低级别设置是通过CACHE API 也就是HTTPCachePolicy类来实现,下面我把这两种方式写出来:
Page指令: <%@ outputcache duration=秒数%>
页面中加上这种指令后,在指定的秒数内,对该页面的请求所返回结果都是一样的!
这个设置总共有5个可用的特性,事实上,只有Duration和VaryByParam特性是必须的。
1 控制页面缓存的位置
Location :指能缓存资源的3个不同的地方(浏览器、代理服务器和Web服务器)。在编写页面时可以使用这个特性指定允许页面输出缓存在哪个位置。该特性有5个可能的设置
(1) Any 默认值,即可以缓存在客户端浏览器,也可以缓存在代理服务器里,或者缓存在Web服务器本身
(2) Client 只能缓存在客户端(即发出请求的浏览器)
(3) Downstream 输出缓存能存储支持HTTP1.1缓存设备中(比如代理服务器)
(4) Server 输出缓存将存储在Web服务器上
(5) None 禁用输出缓存
2 控制缓存中页面的生命周期
Duration 指定缓存存在的周期,单位是秒
3 使用参数启用页面的不同版本
VaryByParam 指定可以缓存同一页面的不同版本,可以设置一个页面传递参数的变量名,然后页面缓存
不同值来进行不同的版本缓存,也可以设置成“*”,可以缓存页面的每个可能的版本,但这个是极度耗内存的做法,并不是一个提高性能的好主意!也可以把该参数设置为“none”,意思就是不要根据参数来缓存同页面的不同版本。
VaryByParam也可以指定一个控件的ID,以控件的变化来指定缓存。如果需要为一个ID为txtCity的TextBox控件建立缓存,其值将显示某城市的气温,那么我们可以进行如下的设置:
<%@ OutputCache Duration=”60” VaryByParam=”txtCity” %>
4 启用页面的不同版本的其他方法
VaryByHeader和 VaryByCustom特性与VaryByParam的相似之处在与:它们允许指定何时创建页面新的缓存版本。
VaryByHeader :允许我们根据由分号分隔的HTTP头的列表来缓存页面的不同版本
VaryByCustom :该特性当设为“browser”,允许我们根据浏览器的名称和主版本信息缓存不同版本,也可以把它设为一个
自定义方法的名称,从而实现我们自己的逻辑,控制缓存的版本。
Cache API指令:
//指定页面输出缓存下一个10秒到期
Response.Cache.SetExpires(DateTime.Now.AddSeconds(10));
//指定所有用户都有对缓存的访问权利
Response.Cache.SetCacheability(HttpCacheability.Public);
5.多页面共享:
Shared :指定为true
在ASP.NET 中有两种WEB缓存技术,一种是输出缓存,另一种是数据缓存!
输出缓存是指把一次请求所产生的动态输出保存于内存中。而页面缓存就属于输出缓存,就是把整个页面缓存起来,如果一个ASP.NET站点存取次数很多的话,而把一些常用到的页面放入内存会带来性能上的提高,因为只要请求页面被缓存起来之后,以后所以对页面的请求(GET和HEAD请求),就不会创建编译页面实例,而是直接从内存中获取!
缺省情况下,输出缓存选项是被打开的,但不是任意的页面都讲被缓存,需要显示的指定哪些页面需要被缓存!缓存后的页面,对于GET和HEAD请求将直接从缓存入口中取出返回给用户,而对页面的回传(POST请求)通常是重新动态的生成页面,即重新加载,和GET.HEAD请求不一样,这点要注意!!
输出缓存有页面缓存的过期/有效时间策略,即一个页面如果被指定60秒的缓存时间,那在这60秒内,页面缓存在内存中,如果超过60秒,则该页面缓存在内存中被清楚,这种方式的过期策略称之为“强制过期”。
页面输出缓存设置方式有2种:一种是高级设置,一种是低级设置
高级设置是通过PAGE指令,低级别设置是通过CACHE API 也就是HTTPCachePolicy类来实现,下面我把这两种方式写出来:
Page指令: <%@ outputcache duration=秒数%>
页面中加上这种指令后,在指定的秒数内,对该页面的请求所返回结果都是一样的!
这个设置总共有5个可用的特性,事实上,只有Duration和VaryByParam特性是必须的。
1 控制页面缓存的位置
Location :指能缓存资源的3个不同的地方(浏览器、代理服务器和Web服务器)。在编写页面时可以使用这个特性指定允许页面输出缓存在哪个位置。该特性有5个可能的设置
(1) Any 默认值,即可以缓存在客户端浏览器,也可以缓存在代理服务器里,或者缓存在Web服务器本身
(2) Client 只能缓存在客户端(即发出请求的浏览器)
(3) Downstream 输出缓存能存储支持HTTP1.1缓存设备中(比如代理服务器)
(4) Server 输出缓存将存储在Web服务器上
(5) None 禁用输出缓存
2 控制缓存中页面的生命周期
Duration 指定缓存存在的周期,单位是秒
3 使用参数启用页面的不同版本
VaryByParam 指定可以缓存同一页面的不同版本,可以设置一个页面传递参数的变量名,然后页面缓存
不同值来进行不同的版本缓存,也可以设置成“*”,可以缓存页面的每个可能的版本,但这个是极度耗内存的做法,并不是一个提高性能的好主意!也可以把该参数设置为“none”,意思就是不要根据参数来缓存同页面的不同版本。
VaryByParam也可以指定一个控件的ID,以控件的变化来指定缓存。如果需要为一个ID为txtCity的TextBox控件建立缓存,其值将显示某城市的气温,那么我们可以进行如下的设置:
<%@ OutputCache Duration=”60” VaryByParam=”txtCity” %>
4 启用页面的不同版本的其他方法
VaryByHeader和 VaryByCustom特性与VaryByParam的相似之处在与:它们允许指定何时创建页面新的缓存版本。
VaryByHeader :允许我们根据由分号分隔的HTTP头的列表来缓存页面的不同版本
VaryByCustom :该特性当设为“browser”,允许我们根据浏览器的名称和主版本信息缓存不同版本,也可以把它设为一个
自定义方法的名称,从而实现我们自己的逻辑,控制缓存的版本。
Cache API指令:
//指定页面输出缓存下一个10秒到期
Response.Cache.SetExpires(DateTime.Now.AddSeconds(10));
//指定所有用户都有对缓存的访问权利
Response.Cache.SetCacheability(HttpCacheability.Public);
5.多页面共享:
Shared :指定为true