ASP.NET教程之ASP.NET 2.0的页面缓存功能先容
java的设计机制:首先产生一个中间码,第二部编译为本地(机器)码。这个机制有很大的缺点。asp.net|缓存|页面 页脸部分缓存是指输入缓存页面的某些部分,而不是缓存全部页面内容。完成页脸部分缓存有两种机制:一种是将页面中必要缓存的部分置于用户控件(.ascx文件)中,而且为用户控件设置缓存功效(包括用户控件的ASP.NET页面可设置也可不设置缓存)。这就是一般所说的“控件缓存”。设置控件缓存的本色是对用户控件举行缓存设置。次要包含以下3种办法:一是利用@OutputCache指令以声明体例为用户控件设置缓存功效,二是在代码埋没文件中利用PartialCachingAttribute类设置用户控件缓存;三是利用ControlCachePolicy类以编程体例指定用户控件缓存设置。别的,另有一种称为“缓存后交换”的办法。该办法与控件缓存恰好相反,将页面中的某一部分设置为不缓存,因而,只管缓存了全部页面,可是当再次哀求该页时,将从头处置那些没有设置为缓存的内容。利用@OutputCache指令
控件缓存与页面输入缓存的@OutputCache指令既有类似的地方,又有分歧的方面。两者的配合点在于它们的设置办法基础不异,都是文件顶部设置包括属性的@OutputCache指令字符串。分歧点包含以下两个方面:一是控件缓存的@OutputCache指令设置在用户控件文件中,而页面输入缓存的@OutputCache设置在一般ASP.NET文件中。二是控件缓存的@OutputCache指令只能设置6个属性,Duration、Shared、SqlDependency、VaryByControl、VaryByCustom和VaryByParam。而在页面输入缓存的@OutputCache指令字符串中设置的属性多达10个。以上是设置控件缓存时必要注重的成绩。上面枚举了一些使用@OutputCache指令设置控件缓存的示例,个中重点申明了VaryByParam和VaryByControl等属性使用。
用户控件中的@OutputCache指令设置源代码
<%@OutputCacheDuration="120"VaryByParam="CategoryID;SelectedID"%>
以上代码设置用户控件缓存无效期工夫是120秒,而且同意利用CategoryID和SelectedID参数来改动缓存。经由过程VaryByParam属性设置,在服务器缓存中大概存储多个用户控件的实例。比方,关于一个包括用户控件的页面,大概存在以下的URL链接。
包括用户控件的页面的URL链接
http://localhost/mypage.aspx?categoryid=foo&selectedid=0
http://localhost/mypage.aspx?categoryid=foo&selectedid=1
当哀求如上URL地点的页面时,因为控件中@OutputCache指令的设置,特别是属性VaryByParam的设置,那末在服务器缓存中就会存储两个版本的用户控件缓存实例。
控件缓存设置除撑持以上所述VaryByParam属性外,还撑持VaryByControl属性。VaryByParam属性基于利用POST大概GET体例发送的称号/值对来改动缓存,而VaryByControl属性经由过程用户控件文件中包括的服务器控件来改动缓存。上面是VaryByControl属性的使用示例代码。
用户控件中的@OutputCache指令设置源代码
<%@OutputCacheDuration="120"VaryByParam="none"VaryByControl="Category"%>
以上代码设置缓存无效期是120秒,而且页面不随任何GET或POST参数改动(即便不利用VaryByParam属性,可是仍旧必要在@OutputControl指令中显式声明该属性)。假如用户控件中包括ID属性为“Category”的服务器控件(比方下拉框控件),那末缓存将依据该控件的变更来存储用户控件数据。
假如读者已把握了页面输入缓存的@OutputCache指令设置办法,那末控件缓存的@OutputCache指令也会水到渠成,不过仅利用个中的6个属性罢了。但是,大概会发生疑问:假如ASP.NET页面和个中包括的用户控件都经由过程@OutputCache指令设置了缓存,那末缓存该怎样运转呢?
碰到这个成绩时,应把握以下个基础准绳:一是ASP.NET同意在页面和页面的用户控件中同时利用@OutputCache指令设置缓存,而且同意设置分歧的缓存过时工夫值。二是假如页面输入缓存过时工夫善于用户控件输入缓存过时工夫,则页面的输入缓存延续工夫优先。比方,假如页面输入缓存设置为100秒,而用户控件的输入缓存设置为50秒,则包含用户控件在内的全部页将在输入缓存中存储100秒,而与用户控件较短的工夫设置有关。三是假如页面输入缓存过时工夫比用户控件的输入缓存过时工夫短,则即便已为某个哀求从头天生该页面的其他部分,也将一向缓存用户控件直到其过时工夫到期为止。比方,假如页面输入缓存设置为50秒,而用户控件输入缓存设置为100秒,则页面其他部分每到期两次,用户控件才到期一次。
利用PartialCachingAttribute类
利用PartialCachingAttribute类可在用户控件的代码埋没文件中设置有关控件缓存的设置内容。此处应重点懂得PartialCachingAttribute类的6个经常使用属性和4品种机关函数。6个经常使用属性是Duration、Shared、SqlDependency、VaryByControl、VaryByCustom和VaryByParam。这与上文所示的控件缓存@OutputCache指令设置的6个属性完整不异,只是所利用的体例分歧。在此不合错误这6个属性反复先容。上面重点申明PartialCachingAttribute类的4种机关函数,这关于利用该类有侧重要意义。
这是最为经常使用的一种格局。其参数duration为整数范例,用于设置用户控件缓存无效期工夫值。该参数与@OutputCache指令中的Duration属性对应。
这类格局设置的内容较多。参数duration与下面申明的不异。参数varyByParams是一个由分号分开的字符串列表,用于使输入缓存产生变更。该参数与@OutputCache指令中的VaryByParam属性对应。参数varyByControls是一个由分号分开的字符串列表,用于使输入缓存产生变更,其与@OutputCache指令中的VaryByControl属性对应。参数varyByCustom用于设置任何暗示自界说输入缓存请求的文本,与@OutputCache指令中的VaryByCustom属性对应。
这类格局中,参数duration、varyByParams、varyByControls、varyByCustom都与下面申明的参数不异。只要参数shared是新增加的。参数shared值是一个布尔值,用于断定用户控件输入缓存是不是能够由多个页面共享。默许值为false。当该参数设置为true,暗示用户控件输入缓存能够被多个页面共享,能够潜伏节俭大批内存。
以上格局中增加了一个新参数sqlDependency。用于设置用户控件缓存出口所利用SQLServer缓存依附功效的数据库及表名。假如包括多个数据库及表名,则利用分号(;)分开开来。当该属性值产生变更时,缓存出口将过时。别的,数据库名必需与web.config文件中的<sqlcachedependency>设置节的内容婚配。
以上先容了PartialCachingAttribute类的6个属性和4种机关函数。上面经由过程一个典范示例申明该类的详细使用办法。比方,利用PartialCachingAttribute类设置用户控件(NewUserControl.ascx文件)的缓存无效期工夫是20秒,其代码以下所示。
利用PartialCachingAttribute类完成设置用户控件缓存
publicpartialclassNewUserControl:UserControl
{......}
以上代码会存储在NewUserControl.ascx.cs文件中。NewUserControl是用户控件类,承继自UserControl基类。当利用PartialCachingAttribute类设置该用户控件缓存时,必需在控件类声明前设置“”。该代码段可具体设置用户控件的缓存功效。比方,以上代码设置了缓存无效工夫为20秒。这与在NewUserControl.ascx文件顶部设置指令的Duration属性值为20是分歧的。
因为用户控件使用了PartialCachingAttribute类(大概包括@OutputCache指令),则ASP.NET剖析器将天生PartialCachingControl类的实例来包装该用户控件。必要注重的是,此时天生PartialCachingControl类实例另有一个需要前提,即必需经由过程利用TemplateControl.LoadControl办法静态加载用户控件,而且,将用户控件拔出页面的控件条理布局中,如许才会天生PartialCachingControl类实例。在一般情形下是不克不及间接利用PartialCachingControl类的。天生PartialCachingControl类实例可以在运转时,猎取对用户控件缓存设置的更年夜天真性。
利用ControlCachePolicy类
ControlCachePolicy是.NETFramework2.0中新呈现的类,次要用于供应对用户控件的输入缓存设置的编程会见。ControlCachePolicy类与前文申明的HttpCachePolicy类有些相似。只是两者所会见的工具分歧。HttpCachePolicy类用于会见页面输入缓存,而ControlCachePolicy类用于会见用户缓存。
利用ControlCachePolicy类有以下注重事项。
一是假如要创立准确无效的ControlCachePolicy类实例以便设置控件缓存,那末必需会见PartialCachingControl类的BasePartialCachingControl.CachePolicy属性(BasePartialCachingControl是PartialCachingControl类的基类)。在这个过程当中,必要挪用LoadControl办法,完成静态加载用户控件,如许才干取得为PartialCachingControl类包装的用户控件实例,进而使用其CachePolicy属性猎取ControlCachePolicy实例。假如间接会见用户控件的UserControl.CachePolicy属性,则只能在该用户控件已由BasePartialCachingControl控件包装的情形下,才干猎取无效的ControlCachePolicy实例。假如用户控件未举行包装,那末实验经由过程CachePolicy属性猎取ControlCachePolicy实例将激发非常,由于它不具有联系关系的BasePartialCachingControl。若要断定用户控件实例是不是撑持缓存(而不天生非常),可反省SupportsCaching属性。
二是ControlCachePolicy实例仅在控件性命周期的Init和PreRender阶段之间,才干乐成操纵。假如在PreRender阶段后修正ControlCachePolicy工具,则ASP.NET会激发非常,由于出现控件后所举行的任何变动,都没法影响缓存设置(控件在Render阶段缓存)。以上内容申明最幸亏Page_Init事务处置程序中,创立并操纵ControlCachePolicy实例。
上面起首解说ControlCachePolicy类的6个属性,它们是Cached、Dependency、Duration、SupportsCaching、VaryByControl和VaryByParams。
Cached属性
用于猎取大概设置一个布尔值,暗示是不是在用户控件中启用控件缓存功效。true暗示启用控件缓存功效,不然为false。
Dependency属性
用于猎取大概设置一个CacheDependency实例工具,该工具与用户控件的输入缓存联系关系。默许值为null。当CacheDependency实例工具生效时,用户控件的输入缓存将从缓存中移除。
Duration属性
猎取大概设置一个TimeSpan布局,暗示用户控件输入缓存的无效工夫。默许值为Zero。
SupportsCaching属性
该属性猎取一个布尔值,用于暗示用户控件是不是撑持缓存功效。假如属性值为true,则暗示该用户控件撑持缓存;不然为false。
VaryByControl属性
用于猎取大概设置一个由分号分开的字符串列表,这些字符串包括在用户控件中声明的服务器控件ID属性值。可依据该属性值,使输入缓存产生变更。
VaryByParams属性
用于猎取大概设置一个由分号分开的字符串列表。默许情形下,这些字符串与用GET办法属性发送的查询字符串值对应,或与用POST办法发送的参数对应。用户控件可依据该属性值,使输入缓存产生变更。
别的,ControlCachePolicy类还包含3个经常使用办法,SetExpires、SetSlidingExpiration和SetVaryByCustom。
publicvoidSetExpires(DateTimeexpirationTime);
唆使用户控件输入缓存出口在特定的工夫内过时。可以使用和参数设置为的SetSlidingExpiration办法唆使用户控件输入缓存利用可调过时战略。假如SetSlidingExpiration办法的参数设置为false,则用户控件输入缓存利用相对过时战略。
publicvoidSetSlidingExpiration(booluseSlidingExpiration);
唆使用户控件缓存出口利用Sliding过时战略,大概Absolute过时战略。当参数useSlidingExpiration设置为true时,则用户控件输入缓存利用Sliding过时战略。不然,利用Absolute过时战略。
publicvoidSetVaryByCustom(stringvaryByCustom);
用于自界说用户控件输入缓存利用的恣意文本。假如该属性值是browser,用户控件输入缓存将随扫瞄器称号和次要版本信息的分歧而分歧。假如输出了自界说字符串,则必需在Global.asax文件中重写HttpApplication.GetVaryByCustomString办法。
上面先容一个典范示例,静态设置用户控件缓存过时工夫为30秒,而且利用相对过时战略。用户控件代码埋没文件源代码以下。
利用PartialCachingAttribute类完成设置用户控件缓存(用户控件代码埋没文件)
publicpartialclassSimpleControl:UserControl
{......}
如上代码所示,用户控件类名为SimpleControl,利用PartialCachingAttribute类设置默许的控件缓存过时工夫为100秒。举行云云设置的目标是,完成利用PartialCachingAttribute类对用户控件类的包装,不然,在ASP.NET页面中挪用CachePolicy属性猎取的ControlCachePolicy实例是有效的。也能够接纳其他办法对用户控件举行PartialCachingAttribute类包装,比方,设置@OutputCache指令等。
上面枚举ASP.NET页面文件源代码。
利用ControlCachePolicy类完成设置用户控件缓存(ASP.NET页面文件)
<%@PageLanguage="C#"Debug="true"%>
<%@ReferenceControl="SimpleControl.ascx"%>
<scriptlanguage="C#"runat="server">
voidPage_Init(objectsender,System.EventArgse)
{
//静态加载用户控件,并前往PartialCachingControl的实例工具
PartialCachingControlpcc=LoadControl("SimpleControl.ascx")asPartialCachingControl;
//经由过程CachePolicy属性猎取ControlCachePolicy实例
ControlCachePolicycacheSettings=pcc.CachePolicy;
//假如用户控件的缓存过时设置年夜于60秒,则设置新的过时工夫为30秒,并将其设置为相对过时战略
if(cacheSettings.Duration>TimeSpan.FromSeconds(60))
{
//设置用户控件过时工夫弛缓存过时战略
cacheSettings.SetExpires(DateTime.Now.Add(TimeSpan.FromSeconds(30)));
cacheSettings.SetSlidingExpiration(false);
}
//将用户控件增加到页面控件条理布局中
Controls.Add(pcc);
}
</script>
以上代码是一个包括用户控件SimpleControl.ascx的ASP.NET文件源代码的一部分,次要以编程体例完成对用户控件输入缓存的设置。在全部完成过程当中,因为必要设置用户控件缓存,因而,必需在ASP.NET页面的Page_Init事务处置程序中举行具体设置。起首,利用TemplateControl.LoadControl办法静态加载SimpleControl..ascx文件。因为用户控件SimpleControl..ascx已为PartialCachingAttribute类包装(这一步很关头),因而,LoadControl办法的前往工具不是空援用,而是PartialCachingControl实例。然后,利用PartialCachingControl实例工具的CachePolicy属性,猎取ControlCachePolicy实例工具。该工具次要用于设置用户控件输入缓存的设置。接着,利用SetExpires办法和参数为false的SetSlidingExpiration办法,设置用户控件输入缓存无效期为30秒,而且设置缓存利用相对过时战略。最初,使用Controls类的Add办法将设置好的用户控件增加到页面控件条理布局中。别的,@Reference指令用于对用户控件SimpleControl.ascx举行静态编译和链接。
完成缓存后交换
ASP.NET页面中既包括静态内容,又包括基于数据库数据的静态内容。静态内容一般不会产生变更。因而,对静态内容完成数据缓存长短常需要的。但是,那些基于数据的静态内容,则分歧。数据库中的数据大概时时刻刻都产生变更,因而,假如对静态内容完成缓存,大概形成数据不克不及实时更新的成绩。对此成绩假如利用前文所述的控件缓存办法,明显不实在际,并且完成起来很烦琐,易于产生毛病。
以上所述成绩的实质是怎样才干够完成缓存页面的年夜部份内容,而不缓存页面中的某些片断。ASP.NET2.0供应了缓存后交换功效。完成该项功效可经由过程以下三种办法:一是以声明体例利用Substitution控件,二是以编程体例利用Substitution控件API,三是以隐式体例利用控件。前两种办法的中心是Substitution控件,本节将重点先容该控件,第三种办法仅专注于控件内置撑持的缓存后交换功效,本节仅做扼要申明。
1.Substitution控件使用
为进步使用程序功能,大概会缓存全部ASP.NET页面,同时,大概必要依据每一个哀求来更新页面上特定的部分。比方,大概要缓存页面的很年夜一部分,必要静态更新该页上与工夫大概用户高度相干的信息。在这类情形下,保举利用Substitution控件。Substitution控件可以指定页面输入缓存中必要以静态内容交换该控件的部分,即同意对整页面举行输入缓存,然后,利用Substitution控件指定页中免于缓存的部分。必要缓存的地区只实行一次,然后从缓存读取,直至该缓存项到期或被扫除。静态地区,也就是Substitution控件指定的部分,在每次哀求页面时都实行。Substitution控件供应了一种缓存部分页面的简化办理计划。
Substitution控件承继自Control基类,其声明朝码以下所示:
Substitution控件声明朝码
<asp:substitutionid="Substitution1"methodname=""runat="Server">
</asp:substitution>
如上代码所示,Substitution控件有一个主要属性CCCCMethodName属性。该属性用于猎取大概设置当Substitution控件实行时为回调而挪用的办法称号。该办法对照特别,必需切合以下3条尺度:此办法必需被界说为静态办法;此办法必需承受HttpContext范例的参数;此办法必需前往String范例的值。
在运转情形下,Substitution控件将主动挪用MethodName属性所界说的办法。该办法前往的字符串即为要在页面中的Substitution控件的地位上显现的内容。假如页面设置了缓存全体输入,那末在第一次哀求时,该页将运转并缓存其输入。关于后续的哀求,将经由过程缓存来完成,该页上的代码不会运转。Substitution控件及其有关办法则在每次哀求时都实行,而且主动更新该控件所暗示的静态内容。
必要注重以下3点:一是Substitution控件没法会见页上的其他控件,也就是说,没法反省或变动其他控件的值。可是,代码的确可使用传送给它的参数来会见以后页高低文。二是在缓存页包括的用户控件中能够包括Substitution控件。可是,在输入缓存用户控件中不克不及安排Substitution控件。三是Substitution控件不会出现任何标志,其地位所显现内容完整取决于所界说办法的前往字符串。
上面枚举了一个利用Substitution控件完成缓存后交换功效的示例。示例效果如所示。
缓存后交换示例最终效果
使用程序包含两个工夫显现。第一个工夫显现利用Substitution控件完成了缓存后交换功效,因而,每当单击“革新页面”按钮,其显现的都是以后最新工夫。第二个工夫显现使用了页面输入缓存,因而,其显现工夫仅当数据过时时才更新。
使用程序Default.aspx文件源代码以下所示。
Default.aspx文件源代码
<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Default.aspx.cs"Inherits="_Default"%>
<%@OutputCacheDuration="5"VaryByParam="None"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.1//EN""http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headid="Head1"runat="server">
<title>示例12-2</title>
<linkid="InstanceStyle"href="StyleSheet.css"type="text/css"rel="stylesheet"/>
</head>
<scriptrunat="server"language="C#">
publicvoidPage_Load(objectsender,System.EventArgse)
{
CachedDateLabel.Text=DateTime.Now.ToString();
}
publicstaticstringGetCurrentDateTime(HttpContextcontext)
{
returnDateTime.Now.ToString();
}
</script>
<body>
<formid="form1"runat="server">
<div>
<fieldset>
<legendclass="mainTitle">利用Substitution控件完成页脸部分缓存</legend>
<br/>
<divclass="littleMainTitle">以下工夫显现利用Substitution控件完成缓存后交换:</div>
<asp:SubstitutionID="Substitution2"MethodName="GetCurrentDateTime"runat="Server"></asp:Substitution>
<hr/>
<divclass="littleMainTitle">以下工夫显现利用页面输入缓存,缓存工夫为5秒:</div>
<asp:LabelID="CachedDateLabel"runat="Server"></asp:Label>
<br/>
<center><asp:ButtonID="RefreshButton"Text="革新页面"runat="Server"></asp:Button></center>
</fieldset>
</div>
</form>
</body>
</html>
如上粗体代码所示,页面次要包含Substitution、Label和Button控件。在Page_Load事务处置程序中设置了Label控件显现工夫值。别的,还完成了一个静态办法GetCurrentDateTime,该办法参数为HttpContext范例,前往值为String范例,其前往内容为以后工夫。在代码顶部经由过程@OutputCache指令设置页面输入缓存过时工夫为5秒,这意味着全部页面数据都使用了缓存功效。因而,Label控件所显现的工夫值来自于数据缓存。这个工夫值不会跟着革新页面而变更,仅当数据过时时才会产生更新。Substitution控件的MethodName属性值为GetCurrentDateTime。该控件显现的内容来自于GetCurrentDateTime办法的前往值。尤其主要的是,固然页面设置了输入缓存功效,可是每当页面革新时,ASP.NET实行引擎仍旧要从头实行Substitution控件,并将MethodName属性值指定的办法前往值显现在页面上,因而,显现的是以后工夫值。
2.Substitution控件API使用
上一大节先容了以声明体例利用Substitution控件完成缓存后交换的使用。本节仍旧环绕完成缓存后交换功效,申明另外一种完成办法。该办法的中心是以编程体例使用Substitution控件API完成缓存后交换,相对以声明体例利用Substitution控件的办法具有更强天真性。
Substitution控件API包含一个关头的WriteSubstitution办法,该办法来自于HttpResponse类,其语法代码以下:
WriteSubstitution办法的语法
publicvoidWriteSubstitution(HttpResponseSubstitutionCallbackcallback)
如上所示,WriteSubstitution办法唯一一个参数HttpResponseSubstitutionCallback。该参数是一个托付,其语法代码以下:
HttpResponseSubstitutionCallback托付的语法
publicdelegatestringHttpResponseSubstitutionCallback(HttpContextcontext)
如上代码所示,HttpResponseSubstitutionCallback托付界说的办法有两个特性:一是前往值必需是String,二是参数有且唯一一个,而且是HttpContext范例。
以上先容了WriteSubstitution办法及其参数的语法,这是利用WriteSubstitution办法完成缓存后交换的关头地点。
当必要以编程体例,为缓存的输入呼应静态天生指定的呼应地区时,能够在页面代码中将某个办法(即回调办法)的称号作为参数(HttpResponseSubstitutionCallback)传送给WriteSubstitution办法。如许WriteSubstitution办法就可以够利用回调办法,并将回调办法的前往值作为给定地位的替换内容显现出来。在这个过程当中,回调办法的声明是关头,不但要接纳单个HttpContext参数,并且必需前往一个字符串。必要注重的是,回调办法必需是线程平安的,能够是作为容器的页面大概用户控件中的静态办法,也能够是其他恣意工具上的静态办法或实例办法。因而可知,利用WriteSubstitution办法的长处是能够挪用恣意工具的办法,而不但是挪用Page大概UserControl工具的静态办法。
在第一次哀求页面时,WriteSubstitution实行以下步骤:挪用HttpResponseSubstitutionCallback托付以天生输入;向呼应增加交换缓冲数据,该缓冲区将保存托付(以对未来的哀求挪用)和步骤一中的初次输入;最初,将客户端缓存才能从“大众”降???????o??低到“仅服务器”,如许页面就不会在客户端举行缓存,确保今后对该页的哀求将从头挪用该托付,并天生静态内容。在后续哀求时,缓存模块截获传进的哀求并检索联系关系的存储缓冲区。在写进交换缓冲区时,挪用该托付以天生新的输入,该输入被写进到呼应中。
上面枚举了一个WriteSubstitution办法的使用示例,与2-3所示的示例完成一样功效。分歧的是完成体例。前文示例利用的是Substitution控件,而此处利用的是Substitution控件API的WriteSubstitution办法。使用程序Default.aspx文件部分源代码以下:
Default.aspx文件部分源代码
<%@OutputCacheDuration="5"VaryByParam="None"%>
<headid="Head1"runat="server">
<title>示例12-3</title>
<linkid="InstanceStyle"href="StyleSheet.css"type="text/css"rel="stylesheet"/>
</head>
<scriptrunat="server"language="C#">
......
publicstaticstringGetCurrentDateTime(HttpContextcontext)
{
returnDateTime.Now.ToString();
}
</script>
<body>
<formid="form1"runat="server">
......
<divclass="littleMainTitle">以下工夫显现利用Substitution控件API完成缓存后交换:</div>
<%Response.WriteSubstitution(newHttpResponseSubstitutionCallback(GetCurrentDateTime));%>
......
</form>
<body>
如上粗体代码所示,页面利用@OutputCache指令设置了输入缓存功效,其设置数据缓存过时工夫为5秒。但是,并不是一切页面内容都被缓存,部份内容是不被缓存的。不介入缓存的内容是代码中经由过程挪用Response.WriteSubstitution办法而猎取并显现的前往字符串,显现了以后工夫。必要注重的是,Response.WriteSubstitution办法的参数,该参数必需是HttpResponseSubstitutionCallback托付实例。本例中,托付所界说的办法是GetCurrentDateTime,该办法是一个静态办法,而且参数是HttpContext范例,前往值是String范例。
AdRotator控件的缓存后交换
是一个间接撑持缓存交换功效的控件。假如将控件放在页面上,则不管是不是缓存父页,都将在每次哀求时出现其独有的告白。比方,假如页面包括静态内容(如旧事报导)和显现告白的控件,这类情形下,此缓存模子就很有效。旧事报导不会变动,这意味着它们能够缓存。可是,使用程序请求在每次哀求该页时都显现一条新告白。因为控件间接撑持缓存后交换,因而,不管页是不是缓存,都在该页回发时出现一个新告白。
在经过全球个人PC市场占有90%的微软对asp.net不断优化与整合后,asp.net与微软自身平台的动用上更加的高效,加上asp.net在应用上非常容易上手,相信asp.net仍会是最多客户选用的脚本语言,并会在未来几年继续领跑。 主流网站开发语言之JSP:JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java2platformEnterpriseEdition)应用体系中的一部分。 主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。 Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境! ASP.net的速度是ASP不能比拟的。ASP.net是编译语言,所以,当第一次加载的时候,它会把所有的程序进行编译(其中包括worker进程,还有对语法进行编译,形成一个程序集),当程序编译后,执行速度几乎为0。 ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。 比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。 可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。 在一个项目中谁敢保证每天几千万甚至几亿条的数据不丢失?谁敢保证应用的高可靠性?有可以借签的项目吗?
页:
[1]