ASP.NET网页编程之ASP.NET缓存 办法剖析和理论示例
我实在想不明白java的机制,为什么非要那么蛋疼,在同一个平台下重复编译。向数据层、营业逻辑层、UI或输入层增加缓存撑持。内存如今十分廉价―因而,经由过程以智能的体例在全部使用程序中完成缓存,能够取得很年夜的功能进步。缓存能够掩饰很多不对缓存是一种无需大批工夫和剖析就能够取得“充足优秀的"功能的办法。这里再次夸大,内存如今十分廉价,因而,假如您能经由过程将输入缓存30秒,而不是花上一成天乃至一周的工夫实验优化代码或数据库就能够取得所需的功能,您一定会选择缓存办理计划(假定能够承受30秒的旧数据)。缓存恰是那些使用20%支付取得80%报答的特征之一,因而,要进步功能,应当起首想到缓存。
不外,假如计划很糟,终极却有大概带来不良的成果,因而,您固然也应当只管准确地计划使用程序。但假如您只是必要当即取得充足高的功能,缓存就是您的最好选择,您能够在今后偶然间的时分再尽快从头计划使用程序。页面级输入缓存作为最复杂的缓存情势,输入缓存只是在内存中保存为呼应哀求而发送的HTML的正本。厥后再有哀求时将供应缓存的输入,直到缓存到期,如许,功能有大概失掉很年夜的进步(取决于必要几开支来创立原始页面输入C发送缓存的输入老是很快,而且对照不乱)。完成要完成页面输入缓存,只需将一条OutputCache指令增加到页面便可。
复制代码代码以下:
<%@OutputCacheDuration="60″VaryByParam="*"%>
好像其他页面指令一样,该指令应当呈现在ASPX页面的顶部,即在任何输入之前。它撑持五个属性(或参数),个中两个是必须的。 Duration必须属性。页面应当被缓存的工夫,以秒为单元。必需是正整数。Location指定应当对输入举行缓存的地位。假如要指定该参数,则必需是以下选项之一:Any、Client、Downstream、None、Server或ServerAndClient。VaryByParam必须属性。Request中变量的称号,这些变量名应当发生独自的缓存条目。"none"暗示没有变化。"*"可用于为每一个分歧的变量数组创立新的缓存条目。变量之间用“;"举行分开。VaryByHeader基于指定的标头中的变化改动缓存条目。
VaryByCustom同意在global.asax中指定自界说变化(比方,"Browser")。使用必须的Duration和VaryByParam选项的组合能够处置年夜多半情形。比方,假如您的产物目次同意用户基于categoryID和页变量检察目次页,您能够用参数值为“categoryID;page"的VaryByParam将产物目次缓存一段工夫(假如产物不是随时都在改动,一小时仍是能够承受的,因而,延续工夫是3600秒)。这将为每一个品种的每一个目次页创立独自的缓存条目。每一个条目从其第一个哀求算起将保持一个小时。VaryByHeader和VaryByCustom次要用于依据会见页面的客户端对页面的表面或内容举行自界说。统一个URL大概必要同时为扫瞄器和挪动德律风客户端出现输入,因而,必要针对分歧的客户端缓存分歧的内容版本。
大概,页面有大概已针对IE举行了优化,但必要能针对Netscape或Opera完整下降优化(而不单单是损坏页面)。后一个例子十分广泛,我们将供应一个申明怎样完成此方针的示例:示例:VaryByCustom用于撑持扫瞄器自界说为了使每一个扫瞄器都具有独自的缓存条目,VaryByCustom的值能够设置为“browser"。此功效已内置在缓存模块中,而且将针对每一个扫瞄器称号和次要版本拔出独自的页面缓存版本。
复制代码代码以下:
<%@OutputCacheDuration="60″VaryByParam="None"VaryByCustom="browser"%>
片断缓存,用户控件输入缓存缓存全部页面一般其实不可行,由于页面的某些部分是针对用户定制的。不外,页面的其他部分是全部使用程序共有的。这些部分最合适利用片断缓存和用户控件举行缓存。菜单和其他结构元素,特别是那些从数据源静态天生的元素,也应当用这类办法举行缓存。假如必要,能够将缓存的控件设置为基于对其控件(或其他属性)的变动或由页面级输入缓存撑持的任何其他变化举行改动。利用统一组控件的几百个页面还能够共享那些控件的缓存条目,而不是为每一个页面保存独自的缓存版本。完成片断缓存利用的语法与页面级输入缓存一样,但其使用于用户控件(.ascx文件)而不是Web窗体(.aspx文件)。除Location属性,关于OutputCache在Web窗体上撑持的一切属性,用户控件也一样撑持。用户控件还撑持名为VaryByControl的OutputCache属性,该属性将依据用户控件(一般是页面上的控件,比方,DropDownList)的成员的值改动该控件的缓存。
假如指定了VaryByControl,能够省略VaryByParam。最初,在默许情形下,对每一个页面上的每一个用户控件都独自举行缓存。不外,假如一个用户控件不随使用程序中的页面改动,而且在一切页面都利用不异的称号,则能够使用Shared="true"参数,该参数将利用户控件的缓存版本供一切援用该控件的页面利用。示例
复制代码代码以下:
<%@OutputCacheDuration="60″VaryByParam="*"%>
该示例将ASP.NET缓存用户控件60秒,而且将针对查询字符串的每一个变化、针对此控件地点的每一个页面创立独自的缓存条目。
复制代码代码以下:
<%@OutputCacheDuration="60″VaryByParam="none"VaryByControl="CategoryDropDownList"%>
该示例将ASP.NET缓存用户控件60秒,而且将针对CategoryDropDownList控件的每一个分歧的值、针对此控件地点的每一个页面创立独自的缓存条目。
复制代码代码以下:
<%@OutputCacheDuration="60″VaryByParam="none"VaryByCustom="browser"Shared="true%>
最初,该示例将ASP.NET缓存用户控件60秒,而且将针对每一个扫瞄器称号和次要版本创立一个缓存条目。然后,每一个扫瞄器的缓存条目将由援用此用户控件的一切页面共享(只需一切页面都用不异的ID援用该控件便可)。页面级和用户控件级输入缓存切实其实是一种能够敏捷而烦琐地进步站点功能的办法,可是ASP.NET缓存的真正天真性和壮大功效是经由过程Cache工具供应的。利用Cache工具,您能够存储任何可序列化的数据工具,基于一个或多个依附项的组合来把持缓存条目到期的体例。这些依附项能够包含自从项被缓存后经由的工夫、自从项前次被会见后经由的工夫、对文件和/或文件夹的变动和对其他缓存项的变动,在略作处置后还能够包含对数据库中特定表的变动。以前很热炒跨平台,主要是由于硅谷挑战微软霸主地位的热情,但是冷静下来后,跨平台往往不是那么一回事。假设你有个软件,所谓的跨平台,你只需要为第二个平台上重新编译一次就行了,这样很难么? 是指转换后的Servlet程序代码的行数。这给调试代码带来一定困难。所以,在排除错误时,可以采取分段排除的方法(在可能出错的代码前后输出一些字符串,用字符串是否被输出来确定代码段从哪里开始出错)。 主流网站开发语言之JSP:JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java2platformEnterpriseEdition)应用体系中的一部分。 ASP.net的速度是ASP不能比拟的。ASP.net是编译语言,所以,当第一次加载的时候,它会把所有的程序进行编译(其中包括worker进程,还有对语法进行编译,形成一个程序集),当程序编译后,执行速度几乎为0。 主流网站开发语言之ASP:ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和VisualBASIC类似,可以像SSI(ServerSideInclude)那样把后台脚本代码内嵌到HTML页面中。虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。 在一个项目中谁敢保证每天几千万甚至几亿条的数据不丢失?谁敢保证应用的高可靠性?有可以借签的项目吗? 目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案. 现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。 由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。
页:
[1]