.NEt专家博客!

ASP.NET 2.0中的页面输出缓存

上一篇 / 下一篇  2008-03-21 15:16:42 / 个人分类:ASP.NET

ASP.NET 2.0中的页面输出缓存:点击下载

ASP.NET 2.0中的页面输出缓存

阅读次数:

作者:不详

出处:网上收集

 

 

 静态页面全部内容保存在服务器内存中。当再有请求时,系统将缓存中的相关数据直接输出,直到缓存数据过期。这个过程中,缓存不需要再次经过页面处理生命周期。这样可以缩短请求响应时间,提高应用程序性能。很显然,页面输出缓存适用于不需要频繁更新数据,而占用大量时间和资源才能编译生成的页面。对于那些数据经常更新的页面,则不适用。默认情况下,ASP.NET 2.0启用了页面输出缓存功能,但并不缓存任何响应的输出。开发人员必须通过设置,使得某些页面的响应成为缓存的一部分。ITPUB个人空间/xD l.c4[+T F4T

6V? CS!rX0
  设置页面输出缓存可以使用以下两种方式:一种是使用@ OutputCache指令,另一种是使用页面输出缓存API@ OutputCache指令曾经在ASP.NET 1.x中出现过,并在ASP.NET 2.0中得到了继承和增强。页面输出缓存API主要是指HttpCachePolicy类。ITPUB个人空间UvhF abe ^[

4_d]!} GPS0
使用@ OutputCache指令
$T&u} HC1bFX0
~6N/j GN6jB0
  使用@ OutputCache指令,能够实现对页面输出缓存的一般性需要。@ OutputCache指令在ASP.NET页或者页中包含的用户控件的头部声明。这种方式非常方便,只需几个简单的属性设置,就能够实现页面的输出缓存策略。@ OutputCache指令声明代码如下。ITPUB个人空间k[-u4O"En tQJ]

9eV#fA.j0ITPUB个人空间%l pxb8jov p'D
@ OutputCache指令代码ITPUB个人空间4c-^*u'f%Q2F{Ew b
%@ OutputCacheCacheProfile=" "NoStore="True | False"Duration="#ofseconds"Shared="True | False"Location="Any | Client | Downstream | Server | None | ServerandClient "SqlDependency="database/table name pair | CommandNotification "VaryByControl="controlname"VaryByCustom="browser | customstring"VaryByHeader="headers"VaryByParam="parametername" %ITPUB个人空间!u?$U;i C f7YM

\NNj&U yb T+a;rR0
   如上所示,在@ OutputCache指令中,共包括10个属性,它们是CacheProfileNoStoreDurationSharedLocationSqlDependencyVaryByControlVaryByCustomVaryByHeaderVaryByParam。这些属性将对缓存时间、缓存项的位置、SQL数据缓存依赖等各方面进行设置。下面简要介绍以上属性的基本概念。
6F.P]9qcM`6y0
xc+a,d^L0CacheProfileITPUB个人空间7Y9zB4r^1g:c*V

g'BvMR2[@-hB0
   用于定义与该页关联的缓存设置的名称。是可选属性,默认值为空字符("")。需要注意的是,包含在用户控件中的@ OutputCache指令不支持此属性。在页面中指定此属性时,属性值必须与Web.config文件<outputCacheSettings>配置节下的outputCacheProfiles元素中的一个可用项的名称匹配。如果此名称与配置文件项不匹配,将引发异常。ITPUB个人空间^.jn~ \ ZN._+jg
ITPUB个人空间 m+{%cXM
NoStoreITPUB个人空间5o EN| A

z}[P%R+@0
   该属性定义一个布尔值,用于决定是否阻止敏感信息的二级存储。需要注意的是,包含在用户控件中的@ OutputCache指令不支持此属性。将此属性设置为true等效于在请求期间执行代码“Response.Cache.SetNoStore();”
:x/SY*U ?6Eb(Z*x0ITPUB个人空间n9j6qRnO
Duration
8FWSw&Fw b0ITPUB个人空间V6[$VWq9RH
   用于设置页面或者用户控件缓存的时间。单位是秒。通过设置该属性,能够为来自对象的HTTP响应建立了一个过期策略,并将自动缓存页或用户控件输出。需要注意的是,Duration属性是必需的,否则将会引起分析器错误。
Z+e,Divq%Q0
L2q0mAW FD K B0Shared
F+V)C3]FaZ#W0
L,|vQ;V,aq9Q!|)y0
   该属性定义一个布尔值,用于确定用户控件输出是否可以由多个页共享。默认值为false。注意,包含在ASP.NET页中的@ OutputCache指令不支持此属性。
Nc0Z&N&A^ l(M0
LN.{"Q.OL0Location
UOt^2j(IP0
rs#? bb6E2w0
   用于指定输出缓存项的位置。其属性值是OutputCacheLocation枚举值,它们是AnyClientDownstreamNoneServerServerAndClient。默认值是Any,表示输出缓存可用于所有请求,包括客户端浏览器、代理服务器或处理请求的服务器上。需要注意的是,包含在用户控件中的@ OutputCache指令不支持此属性。 ITPUB个人空间-N7r Vu+d{;^

'z3I!yB7v*{ EJ"C`0SqlDependency
"tY?5k D!r8k0ITPUB个人空间aP_gu:r
   该属性标识一组数据库/表名称对的字符串值,页或控件的输出缓存依赖于这些名称对。需要注意:SqlCacheDependency类监视输出缓存所依赖的数据库中的表,因此,当更新表中的项时,使用基于表的轮询将从缓存中移除这些项。当通知(在SQL Server 2005中)与CommandNotification值一起使用时,最终将使用SqlDependency类向SQL Server 2005服务器注册查询通知。另外,SqlDependency属性的CommandNotification值仅在ASP.NET页中有效。控件只能将基于表的轮询用于@ OutputCache指令。ITPUB个人空间 IM4I2p2XV f'k:g

2I)dV0P,B:PC0\0VaryByControlITPUB个人空间j'M@[ G~
ITPUB个人空间,{ Z*|B8{XPu
   该属性使用一个分号分隔的字符串列表来更改用户控件的输出缓存。这些字符串代表在用户控件中声明的ASP.NET服务器控件的ID属性值。除非已经包含了VaryByParam属性,否则在@ OutputCache指令中,该属性是必需的。
:m | |.C VP0ITPUB个人空间&Wl/s9cH,Z#F2B
VaryByCustomITPUB个人空间6m^8CH J,Vn)o1XW;_~#m

F"WGY2E N#x/Z0
   用于自定义输出缓存要求的任意文本。如果赋予该属性值是browser,缓存将随浏览器名称和主要版本信息的不同而异。如果输入了自定义字符串,则必须在应用程序的Global.asax文件中重写HttpApplication.GetVaryByCustomString方法。ITPUB个人空间 s6{:Lx/V:C)f

yX&r5nqk3\0VaryByHeaderITPUB个人空间Ao-gll?

S+d;p'B-jjz a0
   该属性中包含由分号分隔的HTTP标头列表,用于使输出缓存发生变化。当将该属性设为多标头时,对于每个指定的标头,输出缓存都包含一个请求文档的不同版本。VaryByHeader属性在所有HTTP 1.1缓存中启用缓存项,而不仅限于ASP.NET缓存。用户控件中的@ OutputCache指令不支持此属性。
Jl2Fn*VGJ)?!r0
TMz2z#\!K&}.E0VaryByParam
@M0H*A(b2](d1@ Kj0ITPUB个人空间-H} `:K2j
   该属性定义了一个分号分隔的字符串列表,用于使输出缓存发生变化。默认情况下,这些字符串与用GET方法属性发送的查询字符串值对应,或与用POST方法发送的参数对应。当将该属性设置为多参数时,对于每个指定的参数,输出缓存都包含一个请求文档的不同版本。可能的值包括“none”“*”和任何有效的查询字符串或POST参数名称。值得注意的是,在输出缓存ASP.NET页时,该属性是必需的。它对于用户控件也是必需的,除非已经在用户控件的@ OutputCache指令中包含了VaryByControl属性。如果没有包含,则会发生分析器错误。如果不需要使缓存内容随任何指定参数发生变化,则可将该值设为“none”。如果要使输出缓存根据所有参数值发生变化,则将属性设置为“*”
?0K"Da#qLD_{0ITPUB个人空间U};N2BK2VM1S
   下面列举了两个使用@OutputCache指令的示例代码。
vl$zR%b9A0
?-E'O3D R[Tf0
/pi;yL3b^0
使用@ OutputCache的示例代码1
3n5ExfV+Wn-V0ITPUB个人空间3G#zV1i%ag;D
%@ OutputCache Duration="100" VaryByParam="none"%ITPUB个人空间9^1s*H#Y'j ?S|L
ITPUB个人空间 E{$L6A/[ QM!a8\
   以上示例是@ OutputCache指令的基本应用,其指示页面输出缓存的有效期是100秒,并且页面不随任何GETPOST参数改变。在该页仍被缓存时接收到的请求由缓存数据提供服务。经过100秒后,将从缓存中移除该页数据,并随后显式处理下一个请求并再次缓存页。
A8[;EI8?Lp d0
/k Hxl!a?p0
使用@ OutputCache的示例代码2ITPUB个人空间*z y2`:lkH ~(k/W
ITPUB个人空间o*EfW^^
ITPUB个人空间,DnU%C]_l4H_y
%@ OutputCache Duration="100" VaryByParam="location;firstname" %

ITPUB个人空间i:x:W0\R'u
   以上@ OutputCache指令设置页面输出缓存的有效期是100秒,并且根据查询字符串参数location或者firstname来设置输出缓存。例如,假设客户端请求是“http://localhost/default.aspx?location=beijing”,那么该页面将被作为缓存处理。

静态页面全部内容保存在服务器内存中。当再有请求时,系统将缓存中的相关数据直接输出,直到缓存数据过期。这个过程中,缓存不需要再次经过页面处理生命周期。这样可以缩短请求响应时间,提高应用程序性能。很显然,页面输出缓存适用于不需要频繁更新数据,而占用大量时间和资源才能编译生成的页面。对于那些数据经常更新的页面,则不适用。默认情况下,ASP.NET 2.0启用了页面输出缓存功能,但并不缓存任何响应的输出。开发人员必须通过设置,使得某些页面的响应成为缓存的一部分。
a%g}0W t0
MxV'A!L.hYV2`0
   设置页面输出缓存可以使用以下两种方式:一种是使用@ OutputCache指令,另一种是使用页面输出缓存API@ OutputCache指令曾经在ASP.NET 1.x中出现过,并在ASP.NET 2.0中得到了继承和增强。页面输出缓存API主要是指HttpCachePolicy类。

 

 

baidu

静态页面全部内容保存在服务器内存中。当再有请求时,系统将缓存中的相关数据直接输出,直到缓存数据过期。这个过程中,缓存不需要再次经过页面处理生命周期。这样可以缩短请求响应时间,提高应用程序性能。很显然,页面输出缓存适用于不需要频繁更新数据,而占用大量时间和资源才能编译生成的页面。对于那些数据经常更新的页面,则不适用。默认情况下,ASP.NET 2.0启用了页面输出缓存功能,但并不缓存任何响应的输出。开发人员必须通过设置,使得某些页面的响应成为缓存的一部分。
6YD@w ~&`d/Y7Kb.@0
(qyh-B'^C*F0
  设置页面输出缓存可以使用以下两种方式:一种是使用@ OutputCache指令,另一种是使用页面输出缓存API@ OutputCache指令曾经在ASP.NET 1.x中出现过,并在ASP.NET 2.0中得到了继承和增强。页面输出缓存API主要是指HttpCachePolicy类。
Fd[n xT Sk!O0ITPUB个人空间H.Rs;nr"p)]^
使用@ OutputCache指令ITPUB个人空间EjVFbo7l
ITPUB个人空间 F%_~6~ r+`
  使用@ OutputCache指令,能够实现对页面输出缓存的一般性需要。@ OutputCache指令在ASP.NET页或者页中包含的用户控件的头部声明。这种方式非常方便,只需几个简单的属性设置,就能够实现页面的输出缓存策略。@ OutputCache指令声明代码如下。
0udv4vUp0ITPUB个人空间|6S?;X|({C9g
ITPUB个人空间NA6DyF'OI)O
@ OutputCache指令代码

 

使用@ OutputCache指令
'a0l;PqO+_sp0
[3{'yn1W?1R%D0
  使用@ OutputCache指令,能够实现对页面输出缓存的一般性需要。@ OutputCache指令在ASP.NET页或者页中包含的用户控件的头部声明。这种方式非常方便,只需几个简单的属性设置,就能够实现页面的输出缓存策略。@ OutputCache指令声明代码如下。
US)TZd}I9b0ITPUB个人空间$_4g&\1|*u7R2I
ITPUB个人空间Z_Nf1u
@ OutputCache
指令代码ITPUB个人空间2KOh,aV/l`
ITPUB个人空间 X:{8tL)eS:M6\7}
ITPUB个人空间:G%h5h/EG mHM&N
%@ OutputCacheCacheProfile=" "NoStore="True | False"Duration="#ofseconds"Shared="True | False"Location="Any | Client | Downstream | Server | None | ServerandClient "SqlDependency="database/table name pair | CommandNotification "VaryByControl="controlname"VaryByCustom="browser | customstring"VaryByHeader="headers"VaryByParam="parametername" %
uq3K F+T z0
ITPUB个人空间:?7FR(Ps D:l#s} U
  如上所示,在@ OutputCache指令中,共包括10个属性,它们是CacheProfileNoStoreDurationSharedLocationSqlDependencyVaryByControlVaryByCustomVaryByHeaderVaryByParam。这些属性将对缓存时间、缓存项的位置、SQL数据缓存依赖等各方面进行设置。下面简要介绍以上属性的基本概念。
)IRVV-o^0O0ITPUB个人空间(RL{ `y&cJ
CacheProfile
LfeM'?+s)B0ITPUB个人空间:YLSZ)v
  用于定义与该页关联的缓存设置的名称。是可选属性,默认值为空字符("")。需要注意的是,包含在用户控件中的@ OutputCache指令不支持此属性。在页面中指定此属性时,属性值必须与Web.config文件<outputCacheSettings>配置节下的outputCacheProfiles元素中的一个可用项的名称匹配。如果此名称与配置文件项不匹配,将引发异常。
3Vmk#F@7dPx{0
ty Tx[RV*K0NoStoreITPUB个人空间,d\ Z8{'}3iN'_.W

$m%MO&e0VS(iu N8~0
  该属性定义一个布尔值,用于决定是否阻止敏感信息的二级存储。需要注意的是,包含在用户控件中的@ OutputCache指令不支持此属性。将此属性设置为true等效于在请求期间执行代码“Response.Cache.SetNoStore();”ITPUB个人空间]:h5n~3^0Pc

{b8h^k+FI)n0Duration
-G w T&fD2o+fI$c0ITPUB个人空间ba6q Pj,K:F
  用于设置页面或者用户控件缓存的时间。单位是秒。通过设置该属性,能够为来自对象的HTTP响应建立了一个过期策略,并将自动缓存页或用户控件输出。需要注意的是,Duration属性是必需的,否则将会引起分析器错误。ITPUB个人空间z |4N W*qT}.e;a

w(zFs+b%\0SharedITPUB个人空间^pzzOW
ITPUB个人空间o hNQz7v(v
  该属性定义一个布尔值,用于确定用户控件输出是否可以由多个页共享。默认值为false。注意,包含在ASP.NET页中的@ OutputCache指令不支持此属性。
4wM"k%W:g_,i)^0
%~1c#pgz^0Location
O._SN I.rv0
\"RbrlB0
  用于指定输出缓存项的位置。其属性值是OutputCacheLocation枚举值,它们是AnyClientDownstreamNoneServerServerAndClient。默认值是Any,表示输出缓存可用于所有请求,包括客户端浏览器、代理服务器或处理请求的服务器上。需要注意的是,包含在用户控件中的@ OutputCache指令不支持此属性。
9Xfs `z6C$F$Y0
&vX9u8^4\R8E6h/u@pb0SqlDependencyITPUB个人空间~$q;l_"_*K
ITPUB个人空间;S;]2rZV2k|+td
  该属性标识一组数据库/表名称对的字符串值,页或控件的输出缓存依赖于这些名称对。需要注意:SqlCacheDependency类监视输出缓存所依赖的数据库中的表,因此,当更新表中的项时,使用基于表的轮询将从缓存中移除这些项。当通知(在SQL Server 2005中)与CommandNotification值一起使用时,最终将使用SqlDependency类向SQL Server 2005服务器注册查询通知。另外,SqlDependency属性的CommandNotification值仅在ASP.NET页中有效。控件只能将基于表的轮询用于@ OutputCache指令。
tV@ YW.}6[0ITPUB个人空间*S;|;b#Wy%`,`
VaryByControlITPUB个人空间Ho4hI)`&O9G%}(mu

I(Y4Q |8i%dQ0
  该属性使用一个分号分隔的字符串列表来更改用户控件的输出缓存。这些字符串代表在用户控件中声明的ASP.NET服务器控件的ID属性值。除非已经包含了VaryByParam属性,否则在@ OutputCache指令中,该属性是必需的。ITPUB个人空间2In pX5qR

X8k O amO!h)N(B b0VaryByCustom
kN,]2n1r6M6TX?L0
|/g$NF,?5y"mOn z0
  用于自定义输出缓存要求的任意文本。如果赋予该属性值是browser,缓存将随浏览器名称和主要版本信息的不同而异。如果输入了自定义字符串,则必须在应用程序的Global.asax

TAG:

引用 删除 Guest   /   2008-05-07 13:45:12
1
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-07-07  
  12345
6789101112
13141516171819
20212223242526
2728293031  

数据统计

  • 访问量: 22206
  • 日志数: 630
  • 影音数: 7
  • 建立时间: 2008-01-04
  • 更新时间: 2008-07-04

RSS订阅

Open Toolbar