一 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。
以上只是asp.net 2.0中新增的許多功能的其中兩個,asp,net 2.0中還有更多的新功能和奧秘,等待大家去挖掘。