欢迎来到天天文库
浏览记录
ID:27680103
大小:69.00 KB
页数:7页
时间:2018-12-03
《aspnet缓存技术》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、ASP.NET缓存:方法和最佳实践摘要:ASP.NET提供三种主要形式的缓存:贞面级输山缓存、用户控件级输山缓存(或称为片段缓存)和缓存API。输出缓存和片段缓存的优点是非常易于实现,在大多数情况下,使用这两种缓存就足够了。而缓存API则提供了额外的灵活性(实际上是相当大的灵活性),可用于在应用程序的每一层利用缓存。在ASP.NET提供的许多特性中,缓存支持无疑是我最欣赏的特性,我这样说当然是有充分理巾的。相比ASP.NET的所有其他特性,缓存对应用程序的性能具有最大的潜在影响,利用缓存和苒他机制,ASP.
2、NET开发人员可以接受使用开销很大的控件(例如,DataGrid)构建站点时的额外开销,而不必担心性能会受到太大的影响。为了在应用程序中最大程度地利用缓存,您应该考虑在所有程序级别上都实现缓存的方法。Steve的缓存提不尽早缓存;经常缓存您应该在应用程序的每一层都实现缓存。向数据层、业务逻辑层、UI或输出层添加缓存支持。IA)存现在非常便宜一因此,通过以智能的方式在整个应用程序屮实现缓存,可以获得很大的性能提高。缓存可以掩盖许多过失缓存是一种无需大量时间和分析就可以获得“足够良好的”性能的方法。这里再次强调
3、,内存现在非常便宜,因此,如果您能通过将输出缓存30秒,而不是花上一整天甚至一周的时间尝试优化代码或数据库就可以获得所需的性能,您肯定会选择缓存解决方案(假设可以接受30秒的旧数据)。缓存正是那些利用20%付出获得80%冋报的特性之一,因此,要提高性能,应该首先想到缓存。不过,如果设计很糟糕,最终却有可能带来不良的后果,因此,您当然也应该尽量正确地设计应川程序。但如果您W是耑要立即获得足够高的性能,缓存就是您的最佳选择,您可以在以后有时间的时候再尽快重新没计应用程序。页而级输出缓存作为最简单的缓存形式,输出
4、缓存只是在内存中保留为响应请求而发送的HTML的副本。其后再有请求时将提供缓存的输出,直到缓存到期,这样,性能有可能得到很大的提高(取决于需要多少开销来创建原始页而输出-发送缓存的输出总是很快,并且比较稳定)。实现要实现页面输出缓存,只要将一条OutputCache指令添加到页面即4。<%@OutputCacheDuration=,'60"VaryByParam=,'*"%>如同其他贞面指令一样,该指令应该出现在ASPX页面的顶部,即在任何输出之前。它支持五个属性(或参数),其屮两个是必需的。Duratio
5、n必需属性。贞血应该被缓存的吋间,以秒为单位。必须是正整数。Location指定应该对输出进行缓存的位置。如果要指定该参数,则必须是下列选项之一:Any,Client>Downstream>None、Server或ServerAndClient。VaryByParam必需属性。Request屮变量的名称,这些变量名应该产生单独的缓存条目。"none"表示没有变动可用于为每个不同的变量数组创建新的缓存条目。变量之间用";”进行分隔。VaryByHeader基于指定的标头中的变动改变缓存条目。VaryByCus
6、tom允许在global.asax中指定自定义变动(例如,’’Browser”)。利用必需的Duration和VaryByParam选项的组合可以处理人多数情况。例如,如;!您的产品0录允许用户基于categorylD和页变量查看目录页,您可以用参数值为"categoryID;pageu的VaryByParam将产品目录缓存一段时间(如果产品不是随时都在改变,一小时还是可以接受的,因此,持续时间是3600秒)。这将为每个种类的每个目录页创建单独的缓存条目。每个条目从某第一个请求算起将维持一个小时。VaryB
7、yHeader和VaryByCustom主要用于根据访问页的客户端对贞tfif的外观或内容进行自定义。同一个URL可能需要同时为浏览器和移动电话客户端呈现输出,因此,需要针对不同的客户端缓存不同的内容版本。或者,页面有可能已经针对IE进行了优化,但耑要能针对Netscape成Opera完全降低优化(而不仅仅是破坏页而)。后一个例子非常普遍,我们将提供一个说明如何实现此目标的示例:示例:VaryByCustom川于支持浏览器自定义为了使每个浏览器都具有单独的缓存条目,VaryByCustom的值可以设罝为"b
8、rowser"。此功能已经内置在缓存模块中,并且将针对每个浏览器名称和主要版本插入单独的贞面缓存版本。<%@OutputCacheDuration="60"VaryByParam="NonenVaryByCustom="browser"%>片段缓存,川户控件输出缓存缓存整个页而通常并不可行,因为页而的某些部分是针对用户定制的。不过,页而的其他部分是整个应用程序共有的。这些部分最适合使用片段缓存和用户控件进行缓存。
此文档下载收益归作者所有