ASP.NET2.0的緩存控件與地址映射
發(fā)表時間:2024-02-02 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]在asp.net 2.0中,引入了很多新的控件和功能,比起之前的asp.net 1.0 和asp.net 1.1,有了革命性的改變。本文將簡單介紹其中的兩個新的功能:緩存功能和地址映射功能。本文以.net framework 2.0 和visual web developer 2005 beta ...
在asp.net 2.0中,引入了很多新的控件和功能,比起之前的asp.net 1.0 和asp.net 1.1,有了革命性的改變。本文將簡單介紹其中的兩個新的功能:緩存功能和地址映射功能。本文以.net framework 2.0 和visual web developer 2005 beta 為工具,介紹這兩個新增的功能。
一 Substitution緩存控件
在asp.net 2.0之前的.net 版本中,可以引入緩存功能,將大大增強應(yīng)用程序的性能。但唯一不足的是,一旦使用緩存功能的話,一般都是全部使用緩存,但在有的應(yīng)用中,有的時候可能需要只對頁面的某些控件內(nèi)容使用緩存,而其他部分將不使用緩存功能,不使用緩存功能的控件將實時地獲得服務(wù)器上最新的內(nèi)容。比如,一個web應(yīng)用中,一些固定的網(wǎng)頁信息,如頁面底部的版權(quán)信息,或者是一些不是經(jīng)常更新的信息,可以使用緩存功能,但一些比較實時的信息,如股票價格走勢圖等,就不能使用緩存功能了。這種情況下,以往的asp.net 比較難實現(xiàn),但在asp.net 2.0中,可以通過簡單使用substitution緩存控件就可以實現(xiàn)了。下面講解一下,如果在一個使用了緩存功能的頁面中,如何通過substitution控件使某些部分控件不應(yīng)用緩存。
下面舉個簡單的例子。在這個例子中,將顯示兩個時間,其中一個時間顯示是應(yīng)用了緩存功能的,設(shè)定的緩存時間是30秒,另一個顯示的時間則并沒有應(yīng)用緩存功能,會隨著頁面的每次刷新獲得最新的時間,代碼如下:
<%@ 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>
。糷ead id="Head1" runat="server">
<title>substitution例子</title>
</head>
<body>
。糵orm id="Form1" runat="server">
。紁>下面的時間顯示沒有使用緩存功能</p>
。糰sp: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>
下圖是運行的結(jié)果
運行程序后,每次刷新頁面,則會看到,沒有使用緩存功能的時間控件,每次都會獲得最新的時間,而使用了緩存功能的時間控件,每隔30秒才顯示最新的時間,其余均保持上一次顯示的時間不變。
請注意,在該頁面中,頁面開頭是使用了<%@ outputcache duration="30" varybyparam="none" %>,對頁面使用緩存功能的,而只是簡單的拖拉一個substitution控件,則實現(xiàn)了部分不緩存的功能。在
<asp:substitution id="Substitution1"
methodname="GetCurrentDate"
runat="Server">
中,methodname調(diào)用的是一個方法,該方法中,可以寫入哪些內(nèi)容是不使用緩存功能的,本方法中返回的是字符串。注意,substitution控件中的methodname中調(diào)用的方法必須是靜態(tài)方法,而且傳入的參數(shù)必須是HttpContext.
[page_break]
二 ASP.NET 2.0的URL映射功能
在asp.net 2.0中,在web.config文件中,新增加了url映射功能。什么是url映射功能呢?舉個例子,比如,原來你的首頁的程序是homedefault.aspx,但是,你改邊了其命名,改為default.aspx,那么,為了讓用戶能繼續(xù)用default.aspx能訪問你的web應(yīng)用,就可以使用url映射功能。首先,在web.config文件中,url映射的語法如下:
<urlMappings enabled="[true false]">
<add url="url1" mappedUrl="url2"/>
</urlMappings>
其中,當(dāng)enabled設(shè)置為true時,則允許進行url地址映射,false的話則不允許參數(shù)url1表示的是舊的url地址,url2表示新的要映射的目的url地址,以我們的例子為例,則是
<urlMappings enabled="true">
<add url="~/homedefault.aspx" mappedUrl="~/default.aspx"/>
</urlMappings>
則其效果為,當(dāng)用戶使用homedefault.aspx訪問你的web應(yīng)用時,系統(tǒng)會自動將地址映射到default.aspx,從而可以是用戶正確訪問到你的應(yīng)用。這樣的技巧是很有用的,比如用戶將你的網(wǎng)站放到收藏夾,而當(dāng)你的網(wǎng)站改版或者改變了某些文件時,則用戶依然可以訪問到你的網(wǎng)站。還有,如果你的web應(yīng)用出于安全目的,要隱藏一些程序的url,則可以通過上面的方法實現(xiàn),因為用戶在瀏覽器中看到的地址,依然是舊的url地址,以上面的例子來說,就是用戶在瀏覽器中地址欄看到的,是homedefault.aspx,而不會是新的地址default.aspx。