asp.net 页面部分缓存

页面部分缓存概述

页面部分缓存允许缓存页的部分内容,其他部分则为动态内容。由于大部分Web页面的某些部分在每一次请求时都需要进行更改,所以,在这种情况下,就只能缓存页面的一部分,即页面部分缓存。

页面部分缓存可采用两种工作方式:控件缓存和缓存后替换。控件缓存有时也称为分段缓存,这种缓存方式允许将信息包含在一个用户控件内,然后将该用户控件标记为可缓存的,以此来缓存页输出的部分内容。而缓存后替换将缓存整个页,但页中的某些部分是设为不缓存的。这恰恰与控件缓存相反。

设置控件缓存的实质是对用户控件进行缓存配置。主要包括以下3种方法:一是使用@OutputCache指令以声明方式为用户控件设置缓存功能;二是在代码隐藏文件中使用PartialCachingAttribute类设置用户控件援存;三是使用ControlCachePolicy类以编程方式指定用户控件缓存设置。

使用@OutputCache指令设置用户控件缓存功能

使用@OutputCache指令设置用户控件缓存的方法与页面输出缓存的设置方法相似,都是在文件顶部设置@OutputCache指令。但二者在以下两方面也存在着不同。

1)用户控件缓存的@ OutputCache指令设置在用户控件文件中,而页面输出缓存的@ OutputCache指令设置在普通ASP.NET文件中。

2)用户控件缓存的@ OutputCache指令只能设置6个属性,即DurationSharedSqlDependencyVaryByControlVaryByCustomVaryByParam;而在页面输出缓存的@ OutputCache指令字符串中设置的属性多达10个。

ASP.NET页面和其中包含的用户控件都通过@ OutputCache指令设置了缓存时,还应注意以下3点。

ASP.NET允许在页面和页面的用户控件中同时使用@OutputCache指令设置缓存,并且允许设置不同的缓存过期时间值。

如果页面输出缓存过期时间长于用户控件输出缓存过期时间,则页面的输出缓存持续时间优先。例如,如果页面输出缓存设置为100s,而用户控件的输出缓存设置为50s,则包括用户控件在内的整个页将在输出缓存中存储100s,而与用户控件较短的时间设置无关。

如果页面输出缓存过期时间比用户控件的输出缓存过期时间短,则即使已为某个请求重新生成该页面的其余部分,也将一直缓存用户控件直到其过期时间到期为止。例如,如果页面输出缓存设置为50s,而用户控件输出缓存设置为100s,则页面其余部分每到期两次,用户控件才到期一次。

 

使用PartialCachingAttribute类设置用户控件缓存功能

PartialCachingAttribute 属性类标记用户控件(.ascx 文件),这些用户控件支持片段缓存,并封装了 ASP.NET 缓存控件时使用的缓存设置。页和控件开发人员使用 PartialCachingAttribute 属性在代码隐藏文件中启用用户控件的输出缓存。

PartialCachingAttribute类中的构造函数语法:

1使用分配给要缓存的用户控件的指定持续时间初始化PartialCachingAttribute类的新实例。

public PartialCachingAttribute (int duration)

2.初始化PartialCachingAttribute类的新实例,指定缓存持续时间、所有 GETPOST值、控件名和用于改变缓存的自定义输出缓存要求。

public PartialCachingAttribute (int duration,string varyByParams,string varyByControls,string varyByCustom)

3.初始化PartialCachingAttribute类的新实例,指定缓存持续时间、所有 GETPOST值、控件名、用于改变缓存的自定义输出缓存要求以及用户控件输出是否可在多页间共享。

public PartialCachingAttribute (int duration,string varyByParams,string varyByControls,string varyByCustom,bool shared)

4.初始化PartialCachingAttribute类的新实例,指定缓存持续时间、所有 GETPOST值、控件名、用于改变缓存的自定义输出缓存要求、数据库依赖项以及用户控件输出是否可在多页间共享。

public PartialCachingAttribute (int duration,string varyByParams,string varyByControls,string varyByCustom,string sqlDependency, bool shared)

参数说明如下。

l         duration:表示用户控件保留在输出缓存中的时间(以秒为单位)。

l         VaryByParams:为分号分隔的字符串列表,用于使输出缓存发生变化。默认情况下,这些字符串对应于使用GET方法属性发送的查询字符串值,或者使用POST方法发送的参数。如果将该属性设置为多个参数,则输出缓存将为每个指定的参数包含所请求的文档的不同版本。可能的值包括“none”、“*”以及任何有效的查询字符串或POST参数名。

l         VaryByControls:为分号分隔的字符串列表,用于使输出缓存发生变化。这些字符串表示用户控件上属性的完全限定名。此参数用于用户控件时,用户控件输出随每个指定的用户控件属性的缓存而变化。

l         VaryByCustom:为任何表示自定义输出缓存要求的文本。如果赋予此参数一个值“browser”,则缓存随浏览器名称和主版本信息而变化。如果输入了自定义字符串,则必须在应用程序的Global.asax文件中重写HttpApplication.GetVaryByCustomString方法。

l         shared:表示如果用户控件输出可以在多页间共享,则为True;否则为False

l         sqlDependency:为数据库名和表名的分隔列表,该列表更改时,ASP.NET缓存中的缓存条目将显示过期。这些数据库名与Web配置节中标识的SQL Server缓存依赖项匹配。

PartialCachingAttribute类的常用属性及说明如表1所示。

1 PartialCachingAttribute类的常用属性

   

   

Duration

获取缓存项保留在输出缓存中的时间(以秒为单位)

Shared

获取一个值,该值指示用户控件输出是否可在多页间共享

SqlDependency

获取一个分隔字符串,该字符串标识用户控件所依赖的一个或多个数据库和表的名称对

TypeId 

当在派生类中实现时,获取该Attribute的唯一标识符

VaryByControls

获取输出缓存用于使用户控件发生变化的用户控件属性列表

VaryByCustom

获取输出缓存将用于改变用户控件的自定义字符串列表

VaryByParams

获取输出缓存将用于改变用户控件的查询字符串或窗体POST参数的列表

例如,设置用户控件的缓存时间为10s的代码如下:

……引入的命名空间

[PartialCaching(10)]

public partial class WebUserControl : System.Web.UI.UserControl

{……}

此段代码与在WebUserControl.ascx文件顶部设置@OutputCache指令的Duration属性是一致的。---------------------------
Asp.net 编程全能词典
---------------------------
要使用文档中的源代码,请选择"显示代码"按钮,打开源代码窗口,进行复制!!!
---------------------------
确定  
---------------------------

 

 

你可能感兴趣的:(构建高性能的网站)