如何控制網頁輸出快取在 ASP.NET 中藉由使用 Visual C#.NET

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

在此頁中

結論

本文將告訴您,如何使用 @ OutputCache 指示詞來控制在 ASP.NET 中使用 Visual C#.NET 快取網頁輸出。您可以使用這項技術來快取您網站最常存取的網頁,這可以大幅增加您的 Web 伺服器輸送量。 輸送量通常是以每秒要求來計算。雖然本文中的程式碼範例會示範如何使用 [工期] 以及 [VaryByParam 屬性,本文也包括其他方法,您可以使用 @ OutputCache 指示詞的簡短描述。

注意: 它不是本文的意圖,來描述所有 @ OutputCache 指示詞屬性,而且其儘可能使用中詳細資料。如需詳細資訊請參閱 References 至一節。


需求

  • Microsoft Windows 2000 或 Windows XP
  • Microsoft.NET 架構
  • Microsoft 網際網路資訊伺服器 (IIS)
  • Microsoft ASP.NET

@ OutputCache 指示詞的簡介

若要使用 @ OutputCache 指示詞來控制網頁輸出快取,您只要將指示詞加入頁面的頂端。Page.InitOutputCache 方法將指示詞轉譯為 HttpCachePolicy 類別方法。

@ OutputCache 指示詞包括下列的屬性和設定:
  • 工期: 此屬性指定多長的項目是保留在快取中。 (以秒為單位) 列出為 工期 值。
  • VaryByParam: 此屬性會決定快取項目由 GetPost 參數。比方說如果名為 testValQueryString 變數設定為 VaryByParam 屬性,包含 testVal 的不同值每個網頁要求會快取中單獨的頁面中。下列程式碼將說明 VaryByParam 屬性的語法:
    <%@ OutputCache Duration="Seconds" VaryByParam="testVal"%>
    						
    注意: 您可以指定星號 (*),讓所有的不同版本的項目會快取。而且,您可以指定 「 無 」 如果只有一個版本的快取的項目存在。
  • 位置: 此屬性] 決定項目是要快取的位置。您可以指定下列位置:
    • 任何
    • 用戶端
    • 下游
    • 伺服器

    下列程式碼將說明 位置 屬性的語法:
    <%@ OutputCache Duration="Seconds" Location="Client" %>
    					
  • VaryByCustom: 此屬性包含預設設定 瀏覽器,這表示不同的執行個體的項目會被快取針對每個要求的瀏覽器版本。比方說這兩種 Microsoft Internet Explorer 5 和網際網路總管 5.5 要求項目。當 VaryByCustom 設定為 瀏覽器 時,快取項目會存在每個瀏覽器版本。您無法提供控制其他自訂案例的快取緩衝字串。字串不具有任何意義,除非您提供覆寫 HttpApplication.GetVaryByCustomString 方法 Global.asax 檔中的程式碼。

    下列程式碼將說明 VaryByCustom 屬性的語法:
    <%@ OutputCache Duration="Seconds" VaryByCustom="string" %>
    					
  • VaryByHeader: 這個屬性能讓您指定特定的 HTTP 標頭值作為準則的決定不同的快取項目。下列程式碼將說明 VaryByHeader 屬性的語法:
    <%@ OutputCache Duration="60" VaryByHeader="Accept-Language" %>
    					

建立 @ OutputCache 工期範例的步驟

下列步驟將示範如何使用的網頁輸出快取來指定多久的 持續期間 屬性快取項目。
  1. 建立新的 Visual Basic ASP.NET Web 應用程式專案如下所示:
    1. 開啟 Visual Studio.NET。
    2. 從 [檔案] 功能表指向 [新增],然後按一下 [專案]。
    3. 在 [新增專案] 對話方塊按一下 [專案類型,] 下的 [Visual C# 專案,並按一下 [範本] 之下的 [ASP.NET Web 應用程式。在 [名稱] 文字方塊中輸入 OutputCacheDemo,],然後再按一下 [確定]]。
  2. 建立新的.aspx 頁面在 Visual Studio.NET 如下所示:
    1. 在 [方案總管] 中以滑鼠右鍵按一下專案節點,按一下 [新增],然後再按一下 [加入 Web Form]。
    2. 在 [名稱] 文字方塊中輸入 OutputCacheDuration.aspx,然後按一下 [開啟舊檔]。
  3. 刪除 Visual Studio.NET 新增至網頁的預設程式碼。
  4. 反白下列程式碼、 程式碼上按一下滑鼠右鍵,然後按一下 [複製]。Visual 的 Studio.NET 中按一下 貼成 HTML編輯 功能表上,程式碼貼入.aspx 網頁:
    <%@ OutputCache Duration="20" VaryByParam="none"%>
    <HTML>
       <HEAD>
       <script language="C#" runat="server">
       void Page_Load(object sender, EventArgs e) 
       {	
          Label1.Text = "Time: " + DateTime.Now.TimeOfDay.ToString();
       }
       </script>
       </HEAD>
       <body>
          <STRONG>@ OutputCache Duration Sample</STRONG>
          <hr>
          <br>
          <asp:Label id="Label1" runat="server">Label</asp:Label>
          <br>
       </body>
    </HTML>
    					
  5. 從 [檔案] 功能表中,按一下 [儲存 OutputCacheDuration.aspx ?儲存網頁]。
  6. 從 [建置 功能表整合式開發環境 (IDE) 中,按一下 建置
  7. 來執行這個範例,請 OutputCacheDuration.aspx 在 [方案總管] 上按一下滑鼠右鍵然後按一下 [在瀏覽器中的檢視
  8. 網頁出現在瀏覽器中之後注意出現在標籤中的時間。
  9. 重新整理頁面在瀏覽器中。請注意時間是相同先前的。如果 20 秒時間] 設定過期後,重新整理頁面,就會顯示新的快取版本的網頁。

    注意: 如果您在外部瀏覽器中檢視網頁,您可以按下 F5 鍵重新整理頁面。如果您在 Visual Studio.NET IDE 內部瀏覽器中檢視頁面,可以在頁面上按一下滑鼠右鍵,再然後按一下 [重新整理 重新整理頁面。

建立 @ OutputCache VaryByParam 範例的步驟

下列步驟將告訴您,如何使用 VaryByParam 屬性來允許不同的快取版本之網頁的快取網頁輸出,以便存在根據其中一個其 QueryString 變數值的值。
  1. 建立新的.aspx 頁面在 Visual Studio.NET 如下所示:
    1. 在 [方案總管] 中以滑鼠右鍵按一下專案節點,按一下 [新增],然後再按一下 [加入 Web Form]。
    2. 在 [名稱] 文字方塊中輸入 OutputCacheVaryByParam.aspx,然後按一下 [開啟舊檔]。
  2. 刪除預設 Visual Studio.NET 將新增至資料頁的預設程式碼。
  3. 反白下列程式碼、 程式碼上按一下滑鼠右鍵,然後按一下 [複製]。Visual 的 Studio.NET 中按一下 貼成 HTML編輯 功能表上,程式碼貼入.aspx 網頁:
    <%@ OutputCache Duration="20" VaryByParam="testVal"%>
    <HTML>
       <HEAD>
          <script language="C#" runat="server">
       void Page_Load(object sender, EventArgs e) 
       {	
          Label1.Text = "Time: " + DateTime.Now.TimeOfDay.ToString();
       }
       </script>
       </HEAD>
       <body>
          <P>
             <STRONG>@ OutputCache VaryByParam Sample</STRONG>
          </P>
          <P>
             <hr>
          </P>
          <P>
             <br>
             <asp:Label id="Label1" runat="server"></asp:Label>
             <br>
             <hr>
             <a href=http://yourservername/OutputCacheDemo/OutputCacheVaryByParam.aspx?testVal=123">testVal(123)</a>
             <br>
             <a href=http://yourservername/OutputCacheDemo/OutputCacheVaryByParam.aspx?testVal=345">testVal(345)</a>
          </P>
       </body>
    </HTML>
    						
    注意: 您必須修改兩個超連結,在上述的程式碼,以反映您的 Web 伺服器的名稱。在此外您可能會注意到 VaryByParam 屬性設定為不同,根據 QueryString 變數 testVal 值。這會導致網頁輸出快取每個執行個體在其中 testValQueryString 變數值不相同。
  4. 從 [檔案] 功能表中,按一下 [儲存 OutputCacheVaryByParam.aspx ?儲存網頁]。
  5. 從 IDE 中 [建置] 功能表中,按一下 [建置]。
  6. 來執行這個範例,請 OutputCacheVaryByParam.aspx 在 [方案總管] 上按一下滑鼠右鍵然後按一下 [在瀏覽器中的檢視
  7. 網頁出現在瀏覽器中之後按一下 [testVal(123)]。這會導致瀏覽器瀏覽至網頁,但 QueryString 變數 testVal 設為 "123"。記下出現的時間。
  8. 請再按一下 testVal(123)。請注意時間是相同先前的。網頁輸出已快取根據 testVal 變數的值。
  9. 按一下 testVal(345)。請注意,新的時間會出現在頁面上。
  10. 請再按一下 testVal(345)。請注意先前的網頁輸出快取,而且會顯示在瀏覽器中。
  11. 按一下以回到第一個執行個體 testVal(123)。請注意不同的網頁輸出快取版本會出現,根據提供的 QueryString 變數的值。

疑難排解

  • 當您使用 [VaryByParam 留意,變更為其他快取項目中的 QueryString 變數的大小寫結果。
  • 請記住 工期 以秒為單位指定。
  • 當您使用 VaryByCustom 並覆寫 HttpApplication.GetVaryByCustomString 方法 Global.asax 檔中的時,瀏覽器 的預設設定會使用如果找到沒有相符的自訂字串所提供的屬性。

?考

網頁輸出快取的詳細資訊,請參閱以下列 Microsoft 網站:
GotDotNet 網頁輸出快取的快速入門教學課程
Microsoft.NET 架構軟體開發套件 (SDK)
http://msdn2.microsoft.com/en-us/library/ms950382.aspx

快取 ASP.NET 網頁
http://msdn2.microsoft.com/en-us/library/xsbfdd8c(vs.71).aspx

@ OutputCache
http://msdn2.microsoft.com/en-us/library/hdxfb6cy(vs.71).aspx

屬性

文章編號: 308375 - 上次校閱: 2007年5月31日 - 版次: 7.9
這篇文章中的資訊適用於:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2003 標準版
  • Microsoft Visual C# .NET 2002 Standard Edition
關鍵字:?
kbmt kbcaching kbhowtomaster kbio KB308375 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:308375
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