一 Substitution缓存控件
在asp.net 2.0之前的.net 版本中,可以引入缓存功能,将大大增强应用程序的性能。但唯一不足的是,一旦使用缓存功能的话,一般都是全部使用缓存,但在有的应用中,有的时候可能需要只对页面的某些控件内容使用缓存,而其他部分将不使用缓存功能,不使用缓存功能的控件将实时地获得服务器上最新的内容。比如,一个web应用中,一些固定的网页信息,如页面底部的版权信息,或者是一些不是经常更新的信息,可以使用缓存功能,但一些比较实时的信息,如股票价格走势图等,就不能使用缓存功能了。这种情况下,以往的asp.net 比较难实现,但在asp.net 2.0中,可以通过简单使用substitution缓存控件就可以实现了。下面讲解一下,如果在一个使用了缓存功能的页面中,如何通过substitution控件使某些部分控件不应用缓存。
下面举个简单的例子。在这个例子中,将显示两个时间,其中一个时间显示是应用了缓存功能的,设定的缓存时间是30秒,另一个显示的时间则并没有应用缓存功能,会随着页面的每次刷新获得最新的时间,代码如下:
<%@ outputcache duration="30" varybyparam="none" %> <script runat="server" language="VB"> Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) CachedDate.Text = DateTime.Now.ToString() End Sub Shared Function GetCurrentDate(ByVal context As HttpContext) As String Return DateTime.Now.ToString() End Function </script> <html> <head id="Head1" runat="server"> <title>substitution例子</title> </head> <body> <form id="Form1" runat="server"> <p>下面的时间显示没有使用缓存功能</p> <asp:substitution id="Substitution1" methodname="GetCurrentDate" runat="Server"> </asp:substitution> |
下面的时间显示使用了缓存功能,只有在30秒后才改变:
<asp:label id="CachedDateLabel" runat="Server"></asp:label> <asp:button id="Refresh" text="刷新页面" runat="Server"> </asp:button> </form> </body> </html> |
下图是运行的结果
![]() |
运行程序后,每次刷新页面,则会看到,没有使用缓存功能的时间控件,每次都会获得最新的时间,而使用了缓存功能的时间控件,每隔30秒才显示最新的时间,其余均保持上一次显示的时间不变。
请注意,在该页面中,页面开头是使用了<%@ outputcache duration="30" varybyparam="none" %>,对页面使用缓存功能的,而只是简单的拖拉一个substitution控件,则实现了部分不缓存的功能。在
<asp:substitution id="Substitution1" methodname="GetCurrentDate" runat="Server"> |
中,methodname调用的是一个方法,该方法中,可以写入哪些内容是不使用缓存功能的,本方法中返回的是字符串。注意,substitution控件中的methodname中调用的方法必须是静态方法,而且传入的参数必须是HttpContext.
二 ASP.NET 2.0的URL映射功能
在asp.net 2.0中,在web.config文件中,新增加了url映射功能。什么是url映射功能呢?举个例子,比如,原来你的首页的程序是homedefault.aspx,但是,你改边了其命名,改为default.aspx,那么,为了让用户能继续用default.aspx能访问你的web应用,就可以使用url映射功能。首先,在web.config文件中,url映射的语法如下:
<urlMappings enabled="[true|false]"> <add url="url1" mappedUrl="url2"/> </urlMappings> |
其中,当enabled设置为true时,则允许进行url地址映射,false的话则不允许参数url1表示的是旧的url地址,url2表示新的要映射的目的url地址,以我们的例子为例,则是
<urlMappings enabled="true"> <add url="~/homedefault.aspx" mappedUrl="~/default.aspx"/> </urlMappings> |
则其效果为,当用户使用homedefault.aspx访问你的web应用时,系统会自动将地址映射到default.aspx,从而可以是用户正确访问到你的应用。这样的技巧是很有用的,比如用户将你的网站放到收藏夹,而当你的网站改版或者改变了某些文件时,则用户依然可以访问到你的网站。还有,如果你的web应用出于安全目的,要隐藏一些程序的url,则可以通过上面的方法实现,因为用户在浏览器中看到的地址,依然是旧的url地址,以上面的例子来说,就是用户在浏览器中地址栏看到的,是homedefault.aspx,而不会是新的地址default.aspx。