如何: 透過快取在 ASP.NET 網頁而提升效能

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本:315896
結論
本文將告訴您,如何藉由快取整個的 ASP.NET 網頁,以 @ OutputCache 頁面指示詞改善 ASP.NET 應用程式的效能。您也可以快取的 ASP.NET Web 網頁的特定部份 @ OutputCache 頁面指示詞雖然本文不會示範這項實作。

back to the top

需求

下列清單列出建議的硬體、 軟體、 網路基礎結構及您需要的服務套件:
  • Microsoft Visual Studio.NET
  • Microsoft 網際網路資訊伺服器 (IIS) 4.0 或 Microsoft 網際網路資訊服務 (IIS) 5.0
本文假設您已熟悉下列主題:
  • Web 應用程式
  • Microsoft ASP.NET
back to the top

該技巧的描述

當您快取資訊時,您會在記憶體中放置資訊。通常,IIS 收到一個頁面的要求時, IIS 從硬碟讀取頁面,並再傳送該網頁。有時候,IIS 可以自動將資訊儲存在記憶體來改善效能。@ OutputCache 指示詞可讓您在記憶體中, 保留頁面即使該頁面不符合準則,IIS 會使用來判定它會保存在記憶體中的資訊為何。

例如存取資料庫的網頁是再次將您瀏覽每次執行頁面,以取得最新的資料。當您使用 [@ OutputCache 指示詞頁面是保留在記憶體中到資料庫的一項查詢的結果指定的時段內過期前。因此,您可以使用 @ OutputCache 指示詞以避免查詢資料庫,每次有人瀏覽頁面。這是不常變更的資料非常有用的。

back to the top

建立使用 @ OutputCache 的 ASP.NET Web 應用程式

本章節中您可以建立快取網頁特定的時間期間使用 @ OutputCache 頁面指示詞的 ASP.NET Web 應用程式。
  1. 請依照下列步驟執行 Visual Basic.NET 中建立新的 ASP.NET Web 應用程式:
    1. 開啟 Visual Studio.NET。
    2. 在 [檔案] 功能表上指向 [新增],然後按一下 [專案]。
    3. 在 [新增專案] 對話方塊按一下 [專案類型 下的 [Visual Basic 專案],然後再按一下 [範本] 下方的 [ASP.NET Web 應用程式
  2. 切換至 HTML 檢視 WebForm1.aspx] 視窗中,然後將下列指示詞加入 @ Page 指示詞之後立即:
    <%@ OutputCache Duration="10" VaryByParam="none" %>						
    這個程式碼設定 @ OutputCache 指示詞的 持續期間 屬性為 10 秒,使頁面內容會快取 10 秒鐘。在另外 VaryByParam 屬性所組成的字串,您可以用以變更輸出快取根據使用者定義的變數清單 (以分號分隔。這項功能是這篇文章的討論範圍內,因此前述的程式碼將 VaryByParam 設定為
  3. 在的 WebForm1.aspx 的 [HTML] 檢視加入下列程式碼之間開頭和結尾 <form>標記,以新增一個標籤 控制項至表單:
    <asp:Label>Last cached: <%Response.Write(Now())%></asp:Label>						
    您使用此標籤來顯示上一次載入頁面。在這個標籤值應該只變更一次每隔 10 秒,不管了多少次重新整理頁面。
  4. 在 [檔案] 功能表上按一下 [儲存]。
  5. 在 [建置] 功能表上按一下 [建置方案]。
  6. 在頁面上按一下滑鼠右鍵,然後按一下 [瀏覽器的檢視。請注意,會出現一個標籤,會顯示目前的時間。
  7. 重新整理頁面多次。請注意標籤變更只有在 10 秒的時間週期內過期後。
back to the top

完成程式碼清單

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="WebApplication1.WebForm1"%><%@ OutputCache Duration="10" VaryByParam="none" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html>    <head>        <title>WebForm1</title>        <meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">        <meta name="CODE_LANGUAGE" content="Visual Basic 7.0">        <meta name="vs_defaultClientScript" content="JavaScript">        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">    </head>    <body MS_POSITIONING="GridLayout">        <form id="Form1" method="post" runat="server">        <asp:Label>            Last Cached: <%Response.Write(Now())%>        </asp:Label>        </form>    </body></html>				
注意: 您可能需要來參照您的專案和 Web Form 名稱視需要修改下列的程式碼行中 Inherits 屬性:
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="WebApplication1.WebForm1"%>				
的程式碼目前會假設您的專案為 WebApplication1,Web Form 為 WebForm1。

back to the top

請確認它可以運作

  1. 開啟多個瀏覽器視窗。
  2. 在每個視窗瀏覽至.aspx 網頁好像被一般使用者。注意到的所有視窗顯示相同的時間為 10 秒] 期間即使您未瀏不覽頁面在同一時間。
  3. 10 秒後瀏覽],或重新整理您的.aspx 網頁。注意到的所有視窗更新時間。
back to the top


警告:本文為自動翻譯

內容

文章識別碼:315896 - 最後檢閱時間:05/31/2007 02:46:37 - 修訂: 3.6

Microsoft ASP.NET 1.1, Microsoft ASP.NET 1.0

  • kbmt kbcaching kbhowtomaster kbio kbperformance kbwebforms KB315896 KbMtzh
意見反應