如何使用 Visual Basic.NET 在 ASP.NET 快取

文章翻譯 文章翻譯
文章編號: 811431 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

本文將逐步告訴您,控制 ASP.NET 快取網頁和資料物件的方法。快取,可避免當您進行後續的要求時重新建立的資訊。快取是一種重要的技巧來建置更高的執行效能和可調適的伺服器應用程式。在頁面的第一個要求,您可以儲存資料物件]、 [頁,] 或 [在記憶體中的頁的部分。在 Web 伺服器、 Proxy] 伺服器上或在瀏覽器上,您可以儲存這些項目。

其他相關資訊

ASP.NET 提供方便的方法,以控制快取。您可以使用 @ OutputCache 指示詞來控制在 ASP.NET 快取網頁輸出。使用 HttpCachePolicy 類別來儲存為資料集,伺服器記憶體等的任意物件。您可以將快取儲存在應用程式 (例如用戶端瀏覽器、 Proxy 伺服器與 Microsoft 網際網路資訊服務 (IIS)。利用快取控制 HTTP 標頭中,您可以控制快取。

取得更多資訊有關 ASP.NET 輸出快取按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
308516如何控制網頁輸出快取在 ASP.NET 中藉由使用 Visual Basic.NET

快取 ASP.NET Web 網頁

您可以使用 Visual 基本.NET 或 Visual C#.NET 快取使用 @ OutputCache] 指示詞或以程式設計的方式透過程式碼。@ OutputCache 指示詞包含 位置 屬性。這個屬性會決定快取項目的位置。您可以指定下列位置其中之一:
  • 任何-這會輸出快取儲存在用戶端的瀏覽器,Proxy 伺服器 (或任何其他伺服器) 上參與在該要求或處理要求的伺服器上。依預設值,任何 已選取。
  • 用戶端-這會在用戶端瀏覽器上的儲存輸出快取。
  • Downstream-這會輸出快取儲存在要求中加入任何具快取裝置 (而非原始伺服器)。
  • 伺服器-這會在 Web 伺服器上儲存輸出快取。
  • -此關閉輸出快取。

以下是 @ OutputCache 指示詞和對等程式化的程式碼的程式碼範例。
  • 若要儲存輸出快取,以指定的持續期間

    宣告式的方法:
    <%@ OutputCache Duration="60" VaryByParam="None" %>

    程式化的方法:
    Response.Cache.SetExpires(DateTime.Now.AddSeconds(60))
    Response.Cache.SetCacheability(HttpCacheability.Public)
  • 若要儲存輸出快取要求發源的瀏覽器用戶端上

    宣告式的方法:
    <%@ OutputCache Duration="60" Location="Client" VaryByParam="None" %>

    程式化的方法:
    Response.Cache.SetExpires(DateTime.Now.AddSeconds(60))
    Response.Cache.SetCacheability(HttpCacheability.Private)
    
  • 若要儲存在任何 HTTP 1.1 具快取裝置包括 Proxy 伺服器及用戶端,所做的要求上輸出快取

    宣告式的方法:
    <%@ OutputCache Duration="60" Location="Downstream" VaryByParam="None" %>

    程式化的方法:
    Response.Cache.SetExpires(DateTime.Now.AddSeconds(60))
    Response.Cache.SetCacheability(HttpCacheability.Public)
    Response.Cache.SetNoServerCaching()
  • 若要儲存在 Web 伺服器上的輸出快取

    宣告式的方法:
    <%@ OutputCache Duration="60" Location="Server" VaryByParam="None" %>

    程式化的方法:
    Response.Cache.SetExpires(DateTime.Now.AddSeconds(60))
    Response.Cache.SetCacheability(HttpCacheability.Server)
    
  • 若要快取,到達不同的城市與每個 HTTP 要求的輸出

    宣告式的方法:
    <%@ OutputCache duration="60" varybyparam="City" %>
    

    程式化的方法:
    Response.Cache.SetExpires(DateTime.Now.AddSeconds(60))
    Response.Cache.SetCacheability(HttpCacheability.Public)
    Response.Cache.VaryByParams("City") = true
    
    VaryByCustom 屬性、 VaryByHeader] 屬性和 VaryByParam 屬性 @ OutputCache 指示詞中的,HttpCachePolicy 類別會提供 VaryByHeaders 屬性和 VaryByParams] 屬性和 SetVaryByCustom 方法。

關閉用戶端和 Proxy 快取

若要關閉在用戶端位置和 Proxy 位置的 ASP.NET Web 網頁的輸出快取區,位置 屬性值設為 [無,然後將 VaryByParam 值設為 [@ OutputCache 指示詞中]。使用下列程式碼範例關閉用戶端和 Proxy 快取。
  • 宣告式的方法:
    <%@ OutputCache Location="None" VaryByParam="None" %>
  • 程式化的方法:
    Response.Cache.SetCacheability(HttpCacheability.NoCache)

快取在伺服器記憶體中的任意物件

ASP.NET 包括功能強大、 容易使用的快取機制,可以讓您儲存需要大量伺服器資源來建立在記憶體中的物件。快取 類別會實作這個方法。執行個體是私人每一個應用程式,而且存留期 (Lifetime) 繫結至對應的應用程式。若要使用 快取 類別,快取 ASP.Net 中任意的物件,請依照下列步驟執行:
  1. 藉由使用 Visual 基本.NET 中建立新的 ASP.NET Web 應用程式。
  2. 根據預設值,WebForm1.aspx,即建立。
  3. 在的 WebForm1.aspx 的 [HTML] 檢視以下列的範例程式碼取代現有的程式碼:
    <%@ Import Namespace="System.Data.SqlClient" %>
    <%@ Import Namespace="System.Data" %>
    <HTML>
    	<script language="vb" runat="server">
    
    		Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
    			Dim Source As DataView
    
    		'Retrieve the DataView object from the Cache class. If it does not exist, add the DataView object to the Cache class.
    
    		Source = CType(Cache("MyDataSet"), DataView)
    
    		If Source Is Nothing Then
    
    			Dim myConnection As SqlConnection = New SqlConnection("Server=ServerName; database=Pubs; user id=UID; password=PWD;")
    			Dim myCommand As SqlDataAdapter = New SqlDataAdapter("select * from Authors", myConnection)
    			Dim ds As DataSet = New DataSet()
    			myCommand.Fill(ds, "Authors")
    
    			Source = New DataView(ds.Tables("Authors"))
    			Cache("MyDataSet") = Source
    			CacheMsg.Text = "Dataset created explicitly"
    			
    		Else
    			
    			CacheMsg.Text = "Dataset retrieved from cache"
    
    		End If
    
    		' Bind the DataView object to DataGrid. 
    		MyDataGrid.DataSource = Source
    		MyDataGrid.DataBind()
    
    		End Sub
    
    	</script>
    	<body>
    		<form method="GET" runat="server" ID="Form1">
    	      <h3><font face="Verdana">Caching Data</font></h3>
    			<ASP:DataGrid id="MyDataGrid" runat="server"
    			Width="700"
    			BackColor="#ccccff"
    			BorderColor="black"
    			ShowFooter="false"
    			CellPadding=3
    			CellSpacing="0"
    			Font-Name="Verdana"
    			Font-Size="8pt"
    			HeaderStyle-BackColor="#aaaad" />
    			<p>
    			<i><asp:label id="CacheMsg" runat="server"/></i>
    	    </form>
    		</P>
    	</body>
    </HTML>
    注意 取代值的 ServerNameUIDPWDSqlConnection 物件的範例程式碼中使用 SQL Server 名稱、 使用者 ID 和密碼。
  4. 在 [偵錯] 功能表上按一下 [開始] 執行應用程式]。

    附註當您重新啟動應用程式時,庫存 物件是重新建立。

?考

如需詳細資訊按一下 [下列面的文件編號,檢視 「 Microsoft 知識庫 」 中發行項]:
234067如何防止在 Internet Explorer 中快取
247404如何修改快取控制項的 HTTP 標頭,當您使用 IIS
311006如何防止 Web 快取在 Windows 2000 中
247389IIS: 如何停用特定的 MIME 類型的快取
313561如何在 IIS 中設定內容到期的 HTTP 標頭


如需詳細資訊請造訪下列 Microsoft 網站]:
http://msdn2.microsoft.com/en-us/library/xsbfdd8c(vs.71).aspx


屬性

文章編號: 811431 - 上次校閱: 2007年5月31日 - 版次: 3.6
這篇文章中的資訊適用於:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
關鍵字:?
kbmt kbhowtomaster kbdatabinding kbcaching kbwebforms kbinfo KB811431 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:811431
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com