ASP.NET 2.0的緩衝技術

來源:互聯網
上載者:User
asp.net|緩衝      由資料庫驅動的Web應用程式,如果需要改善其效能,最好的方法是使用緩衝功能。使用者從資料庫中檢索資料,可能是Web應用程式中執行最慢的操作之一。因為其中涉及多個環節,例如,Web伺服器、資料庫伺服器等。尤其是在使用者比較多,檢索的資料量比較大的情況下,會給包括使用者在內的各個方面造成不小的困難。如果能夠將資料庫中的資料緩衝到記憶體(也可以儲存在其他場所),則無需在請求每個頁面時都訪問資料庫。由於從記憶體中返回資料的速度始終比新提供的資料速度快,因而可以大大提供應用程式的效能。
  
    緩衝有一個不太容易克服的缺點,那就是資料到期的問題。最典型的情況是,如果將資料庫表中的資料內容緩衝到伺服器記憶體中,當資料庫表中的記錄發生更改時,Web應用程式則很可能顯示到期的、不準確的資料。對於某些類型的資料,即使顯示的資訊到期,影響也不會很大。然而,對於即時性要求比較嚴格的資料,例如,股票價格、拍賣出價之類資訊,顯示的資料稍有到期都是不可接受的。
  
    為瞭解決以上問題,ASP.net 1.x中曾經提供了一些比較好的緩衝功能,例如,網頁輸出快取、部分緩衝、頁面資料緩衝等。雖然這些緩衝功能可以解決資料緩衝方面的問題,但還是存在較大的缺點,開發人員必須在效能和資料到期之間作出權衡,資料到期的問題始終困擾著開發人員。例如,如果資料庫表中的資料發生了變化,緩衝則也許不能在指定的時間內更新,而必須等到緩衝到期,那麼就有可能為使用者帶來一定的麻煩。理想的情況是,資料庫表中的任何更新,都能夠立刻體現在快取資料中,ASP.NET 2.0克服了以上不足,解決了這個問題。ASP.NET 2.0的緩衝功能是在ASP.NET 1.x基礎之上擴充而來的。
  
    ASP.NET 2.0支援以下幾種緩衝
  
    ·網頁輸出快取
  
    網頁輸出快取是最為簡單的緩衝機制,該機制將整個ASP.NET頁面內容儲存在伺服器記憶體中。當使用者請求該頁面時,系統從記憶體中輸出相關資料,直到快取資料到期。在這個過程中,緩衝內容直接發送給使用者,而不必再次經過頁面處理生命週期。通常情況下,網頁輸出快取對於那些包含不需要經常修改內容的,但需要大量處理才能編譯完成的頁面特別有用。需要讀者注意的是,網頁輸出快取是將頁面全部內容都儲存在記憶體中,並用於完成用戶端請求。
  
    ·頁面部分緩衝
  
    顧名思義,頁面部分緩衝是將頁面部分內容儲存在記憶體中以便響應使用者請求,而頁面其他部分內容則為動態內容。頁面部分緩衝的實現包括兩種方式:控制項緩衝和替換後緩衝。前者也可稱為片段快取,這種方式允許將需要緩衝的資訊包含在一個使用者控制項內,然後,將該使用者控制項標記為可快取的,以此來快取頁面面輸出的部分內容。這一方式緩衝了頁面中的特定內容,而沒有緩衝整個頁面,因此,每次都需重新建立整個頁。例如,如果要建立一個顯示大量動態內容(如股票資訊)的頁,其中有些部分為靜態內容(如每周總結),這時可以將靜態部分放在使用者控制項中,並允許緩衝這些內容。緩衝後替換與控制項緩衝正好相反。這種方式緩衝整個頁,但頁中的各段都是動態。例如,如果要建立一個在規定時間段內為靜態頁,則可以將整個頁設定為進行緩衝。如果向頁添加一個顯示使用者名稱的Label控制項,則對於每次頁重新整理和每個使用者而言,Label的內容都將保持不變,始終顯示緩衝該頁之前請求該頁的使用者的姓名。使用緩衝後替換機制,可以將頁配置為進行緩衝,將頁的個別部分標記為不可緩衝。在此情況下,可以向不可緩衝部分添加Label控制項,這樣將為每個使用者和每次頁請求動態建立這些控制項。
  
    ·應用程式資料緩衝
  
    應用程式資料緩衝提供了一種編程方式,可通過鍵/值對將任意資料存放區在記憶體中。使用應用程式緩衝與使用應用程式狀態類似。但是,與應用程式狀態不同的是,應用程式資料緩衝中的資料是易失的,即資料並不是在整個應用程式生命週期中都儲存在記憶體中。應用程式資料緩衝的優點是由ASP.NET管理緩衝,它會在項到期、無效,或記憶體不足時移除緩衝中的項,還可以配置應用程式緩衝,以便在移除項時通知應用程式。
  
    ·緩衝依賴
  
    ASP.NET 1.x已經提供了一些基於時間、檔案、目錄等緩衝依賴功能。這些功能雖然能夠處理一些常見問題,但是無法解決資料到期的難題。為此,ASP.NET 2.0新增了SQL資料緩衝依賴功能。該功能的核心是SqlCacheDependency類。不同版本的SQL Server,其對於SQL資料緩衝依賴具有不同程度的支援,因此,使用方法差異較大。另外,ASP.NET 2.0還支援以CacheDependency類為核心的自訂緩衝依賴,以及以AggregateCacheDependency類為核心的彙總緩衝依賴等。
  
    ASP.NET 2.0包括了一些有助於進行緩衝配置的新功能。例如,允許使用Web.config檔案來建立緩衝設定。在Web.config檔案中進行適當設定,並在單個頁中引用這些設定後,就能夠將緩衝設定同時應用於多個頁面。同時,緩衝設定還添加了更多用於自訂緩衝效能的選項。
  
    以上簡單介紹了ASP.NET 2.0提供的緩衝功能,它們能夠提高請求響應的輸送量以便提高應用程式效能。實際上,這些緩衝功能有的繼承自ASP.NET 1.x,並且得到了增強,有的則是新增功能。增強功能包括功能更強大的頁面部分緩衝模型、增強緩衝配置以及輸出緩衝指令的改進。新功能包括Web.config緩衝配置支援、自訂緩衝依賴、彙總緩衝依賴、SQL資料緩衝依賴以及緩衝後替換等。
  
    在正式開始介紹以上各個緩衝功能之前,還有兩個概念需要瞭解。一個是緩衝清除,另一個是緩衝到期。
  
    緩衝清除是指從記憶體中移除快取資料。可能由以下3個原因造成:一是快取項目資料到期。每個到期的快取項目資料都必須被刪除,否則導致伺服器記憶體不足,影響其他應用程式執行。二是緩衝依賴項發生改變。依賴項與資料快取項目有著密切關係。根據應用程式設定,如果依賴項發生改變,那麼資料緩衝很可能會被清除。三是由於伺服器記憶體不足,開始緩衝清理過程。如果某些項在一段時間內未被訪問,或是在添加到緩衝中時被標記為低優先順序,則這些項會被移除。
  
    以上介紹了緩衝清除的概念和形成原因,其中涉及一個資料到期的問題。在ASP.NET 2.0中,當向緩衝添加項時,可以設定兩種資料到期類型。一種稱為可調到期,即指定某項自上次被訪問後多長時間到期。例如,可以將某項設定為自上次在緩衝中被訪問後20分鐘到期。另一種是絕對到期,即指定某項在設定的時間到期,而不考慮訪問頻率。例如,可以將某項設定為在下午6點到期,或4小時後到期。
  
    ASP.NET 2.0的緩衝功能具有以下優點:
  
    ·支援更為廣泛和靈活的可開發特徵
  
    ASP.NET 2.0包含一些新增的緩衝控制項和API。例如,自訂緩衝依賴、Substitution控制項、網頁輸出快取API等,這些特徵能夠明顯改善開發人員對於緩衝功能的控制。
  
    ·增強可管理性
  
    使用ASP.NET 2.0提供的配置和管理功能,可以更加輕鬆地管理緩衝功能。
  
    ·提供更高的效能和延展性
  
    ASP.NET 2.0提供了一些新的功能,例如,SQL資料緩衝依賴等,這些功能將協助開發人員建立高效能、伸縮性強的Web應用程式。
  
    另外,緩衝功能也有其自身的不足。例如,顯示的內容可能不是最新、最準確的,為此,必須設定合適的緩衝策略。又如,緩衝增加了系統的複雜性並使其難於測試和調試,因此建議在沒有緩衝的情況下開發與測試應用程式,然後在效能最佳化階段啟用緩衝選項。 


相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。