ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:204.34KB ,
资源ID:3488434      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3488434.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(缓存技术.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

缓存技术.docx

1、缓存技术缓存技术一、 教学要求 通过学习ASP.NET2.0缓存技术的理论知识,掌握缓存技术的使用方法,能应用到实际问题当中。二、 教学目的掌握页面输出缓存的使用方法掌握页面部分缓存的使用方法掌握应用程序数据缓存的使用方法 掌握缓存依赖的用法三、 基础知识1 页面输出缓存页面输出缓存作为最简单的缓存形式,将已经生成的动静态页面全部内容保存在服务器内存中。当再有请求时,系统将缓存中的相关数据直接输出,直到缓存数据过期。这个过程中,缓存不需要再次经过页面处理生命周期。这样可以缩短请求响应时品提高应用程序性能。很显然,页面输出缓存适用于不需要频繁更新数据,而占用大量时间和资源才能编译生成的页面。对于

2、那些数据经常更新的页面,则不适用。默认情况下,ASP.NET 2.0.0启用了页面输出缓存功能,但并不缓存任何响应的输出。开发人员必须通过设置,使得某些页面的响应成为缓存的一部分。设置页面输出缓存可以使用以下两种方式:一种是使用OutPutCache指令,另一种是使用页面输出缓存API。方法一:使用OutPutCache指令使用OutPutCache指令,能够实现对页面输出缓存的一般性需要。OutPutCache指令在ASP.NET页或者页中包含的用户控件的头部声明。这种方式非常方便,只需几个筒单的属性设置,就能够实现页面的输出缓存策略。OutPutCache指令声明代码如下:如上所示,在Ou

3、tPutCache指令中,共包括 10个属性,下面简要介绍以上属性的基本概念。(1)CacheProfile用于定义与该页关联的缓存设置的名称。是可选属性,默认值为空字符(“”)需要注意的是,包含在用户控作中的OutPutCache指令不支持此属性。在页面中指定此属性时,属。性值必须与Web.config文件outputCacheSettings6己置节下的outputCacheProfiles元素中的一个可用项的名称匹配。如果此名称与配置文件项不匹配,将引发异常。(2)Nostore该属性定义一个布尔值,用于决定是否阻止敏感信息的二级存储。需要注意的是,包含在用户挂件中的OutPutCach

4、e指令不支持此属性。将此属性设置为trUe等效于在请求期间执行代码“Response.Cache.SetNostore();”。(3)Duration用于设置页面或者用户控件缓存的时间。单位是秒。通过设置该属性,能够为来自对象的HTTh响应建立了一个过期策略,并将自动缓存页或用户控件输出。需要注意的是,Duraton属性是必需的,否则将会引起分析器错误。(4)Shared该属性定义一个布尔值,用于确定用户控作输出是否可以由多个页共享。默认值为false。注意包舍在ASP.NET页中的OutPutCache指令不支持 此属性。(5)Location用于指定输出缓存项的位置。其属性值是OutPut

5、CacheLocation枚举值,它们是Any、Client、Downstream、None、Server和 ServerAndClient。默认值是人呼,表示输出缓存可用于所有请求,包括客户端浏览器、代理服务器或处理请求的服务器上。需要注意的是,包含在用户控作中的OutPutCache指令不支持此属性。(6)SqlDependency该属性标识一组数据库/表名称对的字符串值,页或控作的输出缓存依赖于这些名称对。需要注意:SqlCacheDependency类监视输出缓存所依赖的数据库中的表,因此,当更新表中的项时,使用基于表的轮询将从缓存中移除这些项。当通知(在SQL Server 2005

6、中)与CommandNotification值一起使用时,最终将使用SqlDependency类向SQL Server 2005服务器注册查询通知。另外,SqlDependency属性的CommandNotification值仅在ASP.NET页中有效。控作只能将基于表的轮询用于OutPutCache指令。(7)VaryControl该属性使用一个分号分隔的字符串列表来更改用户控件的输出缓存。这些字符串代表在用户控作中声明的 ASP.NET服务器控件的属性值。除非已经包含了 VaryByParam属性,否则在OutPutCache指令中,该属性是必需的。(8)VaryByCustom用于自定义

7、输出缓存要求的任意文本。如果赋予该属性值是browser,缓存将随浏览器名称和主要版本信息的不同而异。如果输入了自定义字符串,则必须在应用程序的Global.asax文件中重写H由江HttpApplication.GetVaryCustomstring方法。(9)VaryByHeader该属性中包含由分号分隔的HTTP标头列表,用于使输出缓存发生变化。当将该属性设为多标头时,对于每个指定的标头,输出缓存都包含一个请求文档的不同版本。VyByHeader属性在所有 HTTP.l缓存中启用缓存项,6不仅限于 ASP.NET缓存。用户控件中的OlltputCache指令不支持此属性。(10) Var

8、yByParam该属性定义了一个分号分隔的字符串列表,用于使输出缓存发生变化。默认情况下,这些字符串与用GET方法属性发送的查询字符串值对应,或与用POST方法发送的参数对应。当将该属性设置为多参数时,对于每个指定的参数,输出缓存都包含一个请求文档的不同版本。可能的值包括“none”、“*”和任何有效的查询字符串或POST参数名称。值得注意的是,在榆出缓存ASP.NET页时,该属性是必需的。它对子用户控件也是必需的,除非已经在用户控作的OutPutCache指令中包含了VaryByControl属性。如果没有包含,则会发生分析器铐误。士。果不需要使缓存内容随任何指定参数发生变化,则可将该值设为

9、“none”。如果要使输出缓存根据所有参数值发生变化,则将属性设置为“*”。方法二:使用页面输出缓存 API上文介绍了使用OutPutCache指令实现对于输出缓存的各项设置。这种方法简单易行,深得开发人员青睐。另外,ASP.NET 2.0对还从ASP.NET中继承和扩展了一种使用输出缓存API来编程设置页面输出缓存的方法。该方法的核心是调用 SystemWebHttpCachePolicy。该类主要包含用于设置缓存特定的HTTP标头的方法和用于控制ASP.NET页面输出缓存的方法。与.NET Framework 2.0中的 HttpCachePolicy类相比,NET Framework 2

10、.0中的 HttpC。hePolicy类得到了扩充和发展。主要是增加了一些重要方法,下面简要说明一些常用方法。(1)SetExpires方法用于设置缓存过期的绝对时间。它的参数是一个DataTime类的实例,表示过期的绝对时间。(2)SetLastModified方法用于设置页面的Last-Modified HTTP标头。Last-Modified HTTP标头表示页面上次修改时间,缓存将依靠它来进行计时。如果违反了缓存限制层次结构,此方法将失败。该方法的参数是一个DataTime类的实例。(3)SetslidingExpiration方法该方法将缓存过期从绝对时间设置为可调时间。其参数是一个

11、布尔值。当参数为true时,Cache-Control HTTP标头将随每个响应而更新。此过期模式与相对于当前时间将过期标头添加到所有输出集的 IIS配置选项相同。当参数为 false时,将保留该设置,且任何启用可调整过期的尝试都将静态失败。此方法不直接映射到HTTP标头。它由后续模块或辅助请求来设置源服务器缓存策略。(4)SetOmitVaryStar方法ASP.NET 2.0对新增的方法。用于指定在按参数进行区分时,响应是否应该包含 Vary:*标头。方法参数是一个布尔值,若要指示HttpCachePolicy不对其VaryByHeaders属性使用*值,则为true;否则为false。(

12、5)SetCacheability方法用于设置页面的Cache-Control HTTP标头。该标头用于控制在网络上缓存文档的方式。该方法有两种重载方式,所不同的是参数。一种重载方法的参数是HttpCacheability枚举值,包括NoCache、Private、Public、Server、SerAndNoCache和ServerAndPrivate(有关这些枚举值的定义,可参考MSDN)。另一种方法的参数有两个,一个参数是HttpCacheability枚举值,另一个参数是字符率,表示添加到标头的缓存控制扩展。需要注意的是,仅当与Private或NoCache指令一起使用时,字段扩展名才有

13、效。如果组合不兼容的指令和扩展,则此方法将引发无效参数异常。2. 页面部分缓存页面部分缓存是指输出缓存页面的某些部分,而不是缓存整个页面内容。实现页面部分缓存有两种机制:一种是将页面中需要缓存的部分置于用户控件(.aspx文件)中,并且为用户控件设置缓存功能(包含用户控件的ASP.NET页面可设置也可不设置缓存)。这就是通常所说的“控件缓存”。设置控件缓存的实质是对用户控件进行缓存配置。主要包括以下 3种方法:一是使用OutPutCache指令以声明方式为用户控件设置缓存功能,二是在代码隐藏文件中使用PartialCachingAttribute类设置用户控件缓存;三是使用ControlCac

14、hePolicy类以编程方式指定用户控件缓存设置。另外,还有一种称为“缓存后替换”的方法。该方法与控件缓存正好相反,将页面中的某一部分设置为不缓存,因此,尽管缓存了整个页面,但是当再次请求该页时,将重新处理那些没有设置为缓存的内容。方法一:使用OutPutCache指令控件缓存与页面输出缓存的OutPutCache指令既有相似之处,又有不同的方面。二者的共同点在于它们的设置方法基本相同,都是文件顶部设置包含属性的OutPutCache指令字符串。不同点包括以下两个方面:一是控件缓存的OutPutCache指令设置在用户控件文件中,而页面输出缓存的OutPutCache设置在普通 ASP.NET

15、文件中。二是控件缓存的OutPutCache指令只能设置 6个属性,Duration、Shared、SqlDependency、VaryByControl、VaryByCustom和VaryByParam。而在页面输出缓存的OutPutCache指令字符串中设置的属性多达 10个。以上是设置控件缓存时需要注意的问题。如果读者已经掌握了页面输出缓存的OutPutCache指令设置方法,那么控件缓存的OutPutCache指令也会迎刃而解,无非仅使用其中的6个属性而已。然而,可能会产生疑问:如果 ASP.NET页面和其中包含的用户控件都通过OutPutCache指令设置了缓存,那么缓存该如何运行呢

16、?遇到这个问题时,应掌握以下3个基本原则:一是ASP.NET允许在页面和页面的用户控件中同时使用OutPutCache指令设置缓存,并且允许设置不同的缓存过期时间值。二是如果页面输出缓存过期时间长于用户控件输出缓存过期时间,则页面的输出缓存持续时间优先。例如,如果页面输出缓存设置为100秒,而用户控件的输出缓存设置为50秒,则包括用户控件在内的整个页将在输出缓存中存储 100秒,而与用户控件较短的时间设置无关。三是如果页面输出缓存过期时间比用户控件的输出缓存过期时间短,则即使已为某个请求重新生成该页面的其余部分,也将一直缓存用户控件直到其过期时间到期为止。例如,如果页面输出缓存设置为50秒,而

17、用户控件输出缓存设置为100秒,则页面其余部分每到期两次,用户控件才到期一次。方法二:使用 PartialCachingAttribute类使用PartialCachingAttribute类可在用户控件的代码隐藏文件中设置有关控件缓存的配置内容。此处应重点了解PartialCachingAttribute类的 6个常用属性和 4种类构造函数。6个常用属性是Duration、Shared、SqlDependency、VaryByControl、VaryByCustom和VaryByParam。这与上文所示的控件缓存OutPutCache指令设置的6个属性完全相同,只是所使用的方式不同。在此不对

18、这6个属性重复介绍。下面重点说明PartialCachingAttribute类的4种构造函数,这对于使用该类有着重要意义。(1)PartialCaching(int duration)这是最为常用的一种格式。其参数duration为整数类型,用于设置用户控作缓存有效期时间值。该参数与OutPutCache指令中的 Duraion属性对应。(2)PartialCaching(int duration,string varyByParams,string varyByControls,stringvaryByCustom)这种格式设置的内容较多。参数 duration与上面说明的相同。参数 va

19、ryByParams是一个由分号分隔的字符串列表,用于使输出缓存发生变化。该参数与OutPutCache指令中的 VaryByParam属性对应。参数 varyByControls是一个由分号分隔的字符串列表;用于使输出缓存发生变化,其与OutPutCache指令中的VaryBy Control属性对应。参数varyByCustom用于设置任何表示自定义输出缓存要求的文本,与OutPutCache指令中的VaryByCustom属性对应。(3)PartialCaching(int duration,string varyByParams,string varyByControls,string

20、varyByCustom,bool shared)这种格式中,参数duration、varyByParams、varyByControls、varyByCustom都与上面说明的参数相同。只有参数shared是新添加的。参数shared值是一个布尔值,用于确定用户控件输出缓存是否可以由多个页面共享。默认值为false。当该参数设置为true,表示用户控件输出缓存可以被多个页面共享,可以潜在节省大量内存。(4)PartialCaching(int duration,string varyByParams,string varyByControls,stringvaryByCustom,strin

21、g sqlDependendency,bool shared)以上格式中添加了一个新参数sqlDependency。用于设置用户控件缓存入口所使用 SQL Server缓存依赖功能的数据库及表名。如果包含多个数据库及表名,则使用分号(;)分隔开来。当该属性值发生变化时,缓存入口将过期。另外,数据库名必须与web.config义作中的sqlcachedependency配置节的内容匹配。方法三:使用 ControlCachePolicy类ControlCachePolicy是.NET Framework 2.0中新出现的类,主要用于提供对用户控件的输出缓存设置的编程访问。ControlCache

22、Policy类与前文说明的HttpCachePolicy类有些类似。只是二者所访问的对象不同。HttpCachePolicy类用于访问页面输出缓存,而 ControlCachePolicy类用于访问用户缓存。使用ControlCachePolicy类有以下注意事项。一是如果要创建正确有效的ControlCachePolicy类实例以便设置控件缓存,那么必须访问PartialCachingControl类的BasePartialCachingControl.CachePolicy属性(BasePartialCachingControl是 PartialCachingContrl类的基类)。在这个

23、过程中,需要调用 LoadControl方法,实现动态加载用户控件,这样才能获得为PatialCachingControl类包装的用户控件实例,进而利用其CachePolicy属性获取ControlCachePolicy实例。如果直接访问用户控件的UserControl.CachePolicy属性,则只能在该用户控件已由BasePartialCachingControl控件包装的情况下,才能获取有效的ControlCachePolicy实例。如果用户控件未进行包装,那么尝试通过CachePolicy属性获取ControlCachePolicy实例将引发异常,因为它不具有关联的BaseParti

24、alCachingControl。若要确定用户控件实例是否支持缓存(而不生成异常),可检查SupportsCaching属性。二是ControlCachePolicy实例仅在控件生命周期的Init和PreRender阶段之间,才能成功操作。如果在PreRender阶段后修改ControlCachePolicy对象,则ASP.NET会引发异常,因为呈现控件后所进行的任何更改,都无法影响缓存设置(控件在Render阶段缓存)。以上内容说明最好在Page_Init事件处理程序中,创建并操作ControlCachePolicy实例。下面首先讲解ControlCachePolicy类的6个属性,它们是C

25、ached、Dependency、Duration、SupportsCaching、VaryByControl和VaryByParams。(1)Cached属性用于获取或者设置一个布尔值,表示是否在用户控件中启用控件缓存功能。true表示启用控件缓存功能,否则为false。(2)Dependency属性用于获取或者设置一个CacheDopendeny实例对象,该对象与用户控件的输出缓存关联。默认值为null。当CacheDependency实例对象失效时,用户控件的输出缓存将从缓存中移除。(3)Duration属性获取或者设置一个TimeSpan结构,表示用户控件输出缓存的有效时间。默认值为Z

26、ero。(4)SupportsCaching属性该属性获取一个布尔值,用于表示用户控件是否支持缓存功能。如果属性值为true,则表示该用户控件支持缓存;否则为false。(5)VaryByControl属性用于获取或者设置一个由分号分隔的字符串列表,这些字符串包含在用户控件中声明的服务器控作ID属性值。可根据该属性值,使输出缓存发生变化。(6)VaryByParams属性用于获取或者设置一个由分号分隔的字符串列表。默认情况下,这些字符串与用GET方法属性发送的查询字符串值对应,或与用POST方法发送的参数对应。用户控件可根据该属性值,使输出缓存发生变化。另外,ControlCachePolic

27、y类还包括3个常用方法,SetExpires、SetSlidingExpiration和VaryByCustom。(1)public void SetExpires(DateTime expirationTime);指示用户控件输出缓存入。在特定的时间内过期。可使用SetExpires和参数设置为true的SetslidingExpiration方法指示用户控件输出缓存使用可调过期策略。如果SetslidingExpiration方法的参数设置为false,则用户控作输出缓存使用绝对过期策略。(2)public void SetSlidingExpiration(bool useSliding

28、Expiration);指示用户控件缓存入口使用Sliding过期策略,或者Absolute过期策略。当参数useSlidingExpiration设置为true时,则用户控件输出缓存使用Sliding过期策略。否则,使用Absolute过期策略。(3)public void SetVaryByCustom(sting varyByCustom);用于自定义用户控件输出缓存使用的任意文本。如果该属性值是browser,用户控件输出缓存将随浏览器名称和主要版本信息的不同而不同。如果输入了自定义字符串,则必须在 Global.asax N件中重写 HttpApplication.GetVaryBy

29、Customstring万法。方法四:实现缓存后替换ASP.NET页面中既包含静态内容,又包含基于数据库数据的动态内容。静态内容通常不会发生变化。因此,对静态内容实现数据缓存是非常必要的。然而,那些基于数据的动态内容,则不同。数据库中的数据可能每时每刻都发生变化,因此,如果对动态内容实现缓存,可能造成数据不能及时更新的问题。对此问题如果使用前文所述的控件缓存方法,显然不切实际,而且实现起来很繁琐,易于发生错误。以上所述问题的本质是如何才能够实现缓存页面的大部分内容,而不缓存页面中的某些片段。ASP.NET 2.0提供了缓存后替换功能。实现该项功能可通过以下3种方法:一是以声明方式使用Subst

30、itution控件,二是以编程方式使用Substitution控件API,三是以隐式方式使用AdRotator控件。前两种方法的核心是substitution控件,本节将重点介绍该控件,第三种方法仅专注于AdRotator控件内置支持的缓存后替换功能,本节仅做简要说明。3. 应用程序数据缓存应用程序数据缓存的主要功能是在内存中存储各种与应用程序相关的对象。通常这些对象都需要耗费大量的服务器资源才能创建。因此,对这些对象实施缓存,无论对于服务器还是用户,都有着明显的益处。应用程序数据缓存的生存期依赖于应用程序生存期。当应用程序重新启动时,系统将根据设置,重新创建应用程序数据缓存对象。应用程序数据

31、缓存由Cache类实现,该类从属于System.Web.Caching名字空间,其实例对象为每个应用程序所专用。通过对Cache类的应用,可轻松实现添加、检索和移除应用程序数据缓存,以及移除缓存项时通知应用程序等功能。在实现应用程序数据缓存管理时,通常采用一个简单的模式。首先,需要确定在访问某一缓存项时,该项是否存在于缓存中。如果存在,则使用。如果不存在,则可以重新创建该项,随后将其放回缓存中。这一模式可确保缓存中始终存储着最新的数据。(1) 添加应用程序数据缓存对象应用程序数据缓存由System.Web.Caching.Cache类实现。与Session对象类似,Cathe类提供了简单的字典接口。可以通过该接口使用键值对的形式,对需要缓存的对象实施缓存。同时,还可以设置缓存的有效期、依赖项和优先级等特性。采用这种方式的最大优点是易于使用和管理,这对于开发人员处理应用程序数据缓存有着重大意义。添加应用程序数据缓存对象,实

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1