逐步解說:將 ASP.NET 輸出快取功能與 SQL Server 搭配使用

更新:2007 年 11 月

此逐步解說為您說明如何快取相依於 SQL Server 資料庫中資料的 ASP.NET Web 網頁。

ASP.NET 輸出快取的進階功能是 SQL 快取相依性。SQL 快取相依性能夠讓您快取相依於 SQL Server 資料表之資料的網頁。您可以設定 SQL Server 和 ASP.NET 快取網頁要求,以降低伺服器工作負載,直到網頁相依的資料在 SQL Server 中更新。SQL 快取相依性對如產品目錄等資料或保持相對靜態的客戶註冊資訊非常有用。

逐步解說將說明的工作包括:

  • 建立並設定頁面以顯示 Northwind 資料庫的資料。

  • 啟用 SQL 快取告知的資料庫。

  • 在網頁上和 Web.config 檔案中指定 SQL 快取相依性。

  • 變更 Northwind 資料庫並檢視快取行為。

必要條件

若要完成這個逐步解說,您必須要有:

  • 對含有 Northwind 資料庫的 SQL Server 2000 或 SQL Server 2005 的存取權。

  • 存取 SQL Server Northwind 資料庫。如需下載並安裝 SQL Server 範例 Northwind 資料庫的詳細資訊,請參閱 Microsoft SQL Server 網站上的安裝範例資料庫

    注意事項:

    如果您需要如何登入執行 SQL Server 之電腦的相關資訊,請聯繫伺服器管理員。

  • Microsoft Data Access Components (MDAC) 2.7 (含) 以後版本。

    如果使用的是 Windows XP 或 Windows Server 2003,您就已經有了 MDAC 2.7。不過,如果您使用 Windows 2000,可能需要升級電腦中已安裝的 MDAC。如需詳細資訊,請參閱 MSDN 文件 MDAC 安裝(英文)。

  • .NET Framework 2.0 版。

建立網站

如果您已經在 Visual Web Developer 中建立了網址 (參閱逐步解說:在 Visual Web Developer 中建立基本 Web 網頁),則您可以使用該網站,並移至逐步解說中稍後的「啟用 SQL Server 的快取告知」。否則,請使用下列程序建立新的網站和網頁。

若要建立檔案系統網站

  1. 開啟 Visual Web Developer。

  2. 在 [檔案] 功能表上,按一下 [新網站] (在 Visual Web Developer Express 版中的 [檔案] 功能表上,按一下 [新增],然後再按 [網站])。

    [新網站] 對話方塊隨即出現。

  3. 請在 [Visual Studio 安裝的範本] 下方,按一下 [ASP.NET 網站]。

  4. 在 [位置] 方塊中,輸入您想要用來保存網站頁面的資料夾名稱。

    例如,輸入資料夾名稱 C:\WebSites。

  5. 在 [語言] 清單中,請按一下您想要操作的程式語言。

  6. 按一下 [確定]。

    Visual Web Developer 會建立資料夾和命名為 Default.aspx 的新頁面。

啟用 SQL Server 的快取告知

您必須設定 SQL Server 提供相依資料的變更通知給 ASP.NET。您需要有管理權限才能設定伺服器。

若要啟用 SQL Server 的快取告知

  1. 在 Windows 的 [開始] 功能表上,指向 [所有程式],指向 [附屬應用程式],然後按一下 [命令提示字元] 開啟命令提示字元視窗。

  2. 在磁碟機中尋找 Aspnet_regsql.exe 可執行檔。此檔案會隨 .NET Framework 2.0 版安裝在以下位置:

    %windir%\Microsoft.NET\Framework\FrameworkVersion
    

    確定 %windir% 是表示 Windows 目錄,而且 .NET Framework 是 2.0 (含) 以後版本。路徑可能如下所示:

    C:\WINDOWS\Microsoft.NET\Framework\v2.0.40217
    
  3. 使用下列命令為 Northwind 資料庫中的 Employees 資料表啟用快取告知:

    aspnet_regsql.exe -S <Server> -U <Username> -P <Password> -ed -d Northwind -et -t Employees
    
    注意事項:

    您將需要管理權限或管理帳戶和密碼。如果您沒有這個資訊,請聯繫您的資料庫管理員。

    訊息將會出現,表示啟用資料庫是成功還是失敗。下列訊息表示成功:

    Enabling the table for SQL cache dependency.
    ..
    Finished.
    

將資料連接加入至專案

若要在 Visual Web Developer 中使用 SQL Server 資料庫,您需要加入 Northwind 資料庫的連接。

若要將資料來源加入至專案

  1. 在 [伺服器總管] (Visual Web Developer Express 版中的 [資料庫總管]) 中,以滑鼠右鍵按一下 [資料連接],然後按一下 [加入連接]。

    注意事項:

    [伺服器總管] (Visual Web Developer Express 版中的 [資料庫總管]) 通常停駐在 [方案總管] 後。

    如果看不到 [伺服器總管] (Visual Web Developer Express 版中的 [資料庫總管]),請在 [檢視] 功能表中,按一下 [伺服器總管] (Visual Web Developer Express 版中的 [資料庫總管])。

  2. 如果顯示了 [選擇資料來源] 對話方塊,請執行下列步驟:

    1. 在 [資料來源] 清單中,按一下 [Microsoft SQL Server]。

    2. 在 [資料提供者] 清單中,按一下 [.NET Framework Data Provider for SQL Server]。

    3. 按一下 [繼續]。

  3. 在 [加入連接] 對話方塊中,為您的資料庫提供詳細資料 (伺服器名稱、登入認證等),然後選取 Northwind 資料庫。

  4. 按一下 [確定]。

將時間戳記和資料加入至 Web 網頁

您現在可以建立 Web 網頁來示範快取。在本章節中,您將會加入時間戳記來追蹤頁面的建立時間,並加入 GridView 控制項來檢視 Northwind 資料庫中的 Employees 資料表。

若要將時間戳記和資料加入至 Web 網頁

  1. 切換至 Default.aspx 頁面或開啟它。

  2. 切換至 [設計] 檢視。

  3. 從 [工具箱] 的 [標準] 群組中,將 Label 控制項拖曳至頁面上,保留 Label1 的預設名稱。

  4. 在 [伺服器總管] (Visual Web Developer Express 版中的 [資料庫總管]) 中,展開 [資料連接]。

  5. 展開先前所建立之資料連接的節點。

  6. 展開 [資料表] 節點。

  7. 將 Employees 資料表拖曳至頁面。

    「Visual Web 設計工具」會建立設定為使用您所選取之連接和資料表的 GridView 控制項。

  8. 在 [GridView 工作] 功能表中,按一下 [設定資料來源]。

    預設資料連接字串名稱 NorthwindConnectionString1 隨即出現在 [設定資料來源] 精靈的第一個步驟中。

  9. 按一下 [下一步]。

  10. 在 [設定 Select 陳述式] 窗格中,選取 [指定資料表或檢視的資料行]。

  11. 在 [名稱] 清單中,按一下 [Employees]。

  12. 在 [資料行] 清單中,選取 [EmployeeID]、[LastName] 和 [FirstName] 資料行。

  13. 按一下 [下一步]。

  14. 按一下 [完成]。

    「Visual Web 設計工具」會設定 GridView 控制項顯示所選取的資料。

    注意事項:

    如果您看到詢問您是否要重新整理 GridView 控制項之欄位和索引鍵的訊息,請按一下 []。

  15. 按兩下頁面的空白部分。

    設計工具會產生 Page_Load 方法並切換檢視。

  16. 加入下列粗體顯示的程式碼,以顯示表示頁面建立的時間戳記:

    Protected Sub Page_Load(ByVal sender As Object, _
            ByVal e As System.EventArgs) _
            Handles Me.Load
         Label1.Text = System.DateTime.Now
    End Sub
    
    protected void Page_Load(Object sender, System.EventArgs e)
    {
         Label1.Text = System.DateTime.Now.ToString();
    }
    
  17. 儲存檔案。

在不使用快取的情況下測試網頁

現在您可以執行頁面並觀察行為,而不用進行快取。頁面會載入,而且會顯示目前伺服器時間,然後會擷取資料並放在頁面上。

若要在不使用快取的情況下測試網頁

  1. 按 CTRL+F5 執行頁面。

  2. 在瀏覽器中重新整理頁面

    請注意,時間戳記會隨每次頁面重新整理而變更。資料保持不變。

設定 Web 網頁以進行快取

在這部分的逐步解說中,您將根據 Northwind 資料庫的 Employees 資料表設定 SQL 快取相依性的頁面。

若要設定 Web 網頁以進行快取

  1. 切換至原始碼檢視。

  2. 在頁面頂部,加入下列指示詞以表示相依性:

    <%@ OutputCache Duration="3600" SqlDependency="Northwind:Employees" VaryByParam="none" %>
    

VaryByParam 屬性表示,ASP.NET 在快取時是否應該考慮頁面參數 (例如查詢字串或發佈的值)。當 VaryByParam 設定為 none 時,不會考慮任何參數;不管提供的其他參數為何,都會傳送同一個頁面給所有使用者。將 VaryByParam 設定為 * (星號) 即表示,唯一頁面將要快取之要求參數的每個唯一組合。但是,將 VaryByParam 設定為 * 可能會造成快取網頁的多個不同版本,因此,如果您知道可變更快取的參數,建議在 VaryByParam 屬性中明確指定它們。如需詳細資訊,請參閱快取網頁的多個版本

在 Web.config 檔案中設定快取組態

除前一章節中 Web 網頁上的 OutputCache 宣告之外,您還需要在 Web.config 檔案中指定快取詳細資料。

若要建立及更新 Web.config 檔案

  1. 如果您的網站已具有 Web.config 檔案,請移至步驟 4。

  2. 在 [方案總管] 中,以滑鼠右鍵按一下網站名稱,然後按一下 [加入新項目]

  3. 在 [加入項目] 對話方塊中,按一下 [Web 組態檔],再按 [加入]。

    確定使用的檔名是 Web.config。

  4. 將下列 XML 加入至 Web.config 檔案做為 system.web 項目的子系:

    <!-- caching section group -->
    <caching>
      <sqlCacheDependency enabled = "true" pollTime = "1000" >
        <databases>
          <add name="Northwind" 
             connectionStringName="NorthwindConnectionString1"
             pollTime = "1000"
          />
        </databases>
      </sqlCacheDependency>
    </caching>
    
    注意事項:

    連接字串名稱 NorthwindConnectionString1 早在您建立資料連接時已建立。如果您的連接字串具有不同的名稱,則替代該名稱。

    注意事項:

    在連接字串中指定的帳戶認證必須具有足夠的權限才能輪詢資料庫。

  5. 儲存檔案,然後關閉檔案。

使用快取測試網頁

如果啟用了快取,則重新整理頁面將不再更新時間戳記或進行資料庫查詢,因為 ASP.NET 將透過快取來完成頁面要求。

若要使用快取測試網頁

  • 按 CTRL+F5 執行頁面。

    請注意,時間戳記在每次頁面重新整理後都會保持不變。正在從快取擷取網頁。

變更資料

您現在可以變更資料庫中的資料,並可以看到快取失效及新網頁建立。

若要變更資料

  1. 在 [伺服器總管] (Visual Web Developer Express 版中的 [資料總管]) 中,展開 [資料連接] 節點。

  2. 展開先前所建立的連接。

  3. 展開 [資料表] 節點。

  4. 以滑鼠右鍵按一下 [Employees],然後按一下 [顯示資料表資料]。

  5. 更新資料庫,方法即為編輯資料的資料表 (Data Table) 中的任何欄位,以確保其為 Web 網頁所顯示的欄位。

    或者,您可以使用 SQL 窗格 (如果看不到 SQL 窗格,請在 [查詢設計工具] 功能表中,按一下 [窗格],然後再按 [SQL])。直接輸入 SQL 命令,然後按一下 [查詢設計工具] 工具列中的 [執行 SQL] 按鈕。例如,執行下列命令:

    UPDATE dbo.Employees SET LastName = 'Doe' WHERE (EmployeeID = 5)
    

    這會將員工 5 的名字變更為 Doe。

  6. 關閉資料檢視。

測試 SQL 快取相依性

您可以現在測試頁面,以查看資料和時間戳記是否已變更。

若要測試 SQL 快取相依性

  1. 按 CTRL+F5 執行頁面。

    請注意,時間戳記已變更,而且顯示的是新資料。

  2. 按 CTRL+F5 再次執行此頁。

    這一次,時間戳記會保持不變 (因為資料未變更),而且會再次從快取中擷取網頁。

後續步驟

您也可以使用其他參數快取網頁。如需詳細資訊,請參閱逐步解說:使用輸出快取功能增強網站效能。如果您對資料存取不熟悉,請參閱逐步解說:Web 網頁中的基本資料存取

請參閱

概念

以 SqlCacheDependency 類別在 ASP.NET 中快取

參考

DefaultHttpCachePolicy

OutputCacheSettingsSection