ASP.NET快取概念及其應用淺析
ASP.NET快取概念是什麼呢?通常,應用程式可以將那些頻繁訪問的資料,以及那些需要大量處理時間來建立的資料儲存在記憶體中,從而提高效能。例如,如果應用程式使用複雜的邏輯來處理大量資料,然後再將資料作為使用者頻繁訪問的報表返回,避免在使用者每次請求資料時重新建立
ASP.NET快取概念是什麼呢?通常,應用程式可以將那些頻繁訪問的資料,以及那些需要大量處理時間來建立的資料儲存在記憶體中,從而提高效能。例 如,如果應用程式使用複雜的邏輯來處理大量資料,然後再將資料作為使用者頻繁訪問的報表返回,避免在使用者每次請求資料時重新建立報表可以提高效率。同樣,如 果應用程式包含一個處理複雜資料但不需要經常更新的頁,則在每次請求時伺服器都重新建立該頁會使工作效率低下。
在這些情況下,瞭解了ASP.NET快取概念之後,為了幫助您提高應用程式的效能,ASP.NET快取使用兩種基本的快取機制來提供快取功能。第一 種機制是應用程式快取,它允許您快取所生成的資料,如DataSet或自定義報表業務物件。第二種機制是頁輸出快取,它儲存頁處理輸出,並在使用者再次請求 該頁時,重用所儲存的輸出,而不是再次處理該頁。
ASP.NET快取應用程式
應用程式快取提供了一種程式設計方式,可通過鍵/值對將任意資料儲存在記憶體中。使用應用程式快取與使用應用程式狀態類似。但是,與應用程式狀態不同的 是,應用程式快取中的資料是易失的,即資料並不是在整個應用程式生命週期中都儲存在記憶體中。使用應用程式快取的優點是由ASP.NET管理快取,它會在項 過期、無效、或記憶體不足時移除快取中的項。還可以配置應用程式快取,以便在移除項時通知應用程式。有關更多資訊,請參見快取應用程式資料。
使用應用程式快取的模式是,確定在訪問某一項時該項是否存在於快取中,如果存在,則使用。如果該項不存在,則可以重新建立該項,然後將其放回快取中。這一模式可確保快取中始終有最新的資料。
ASP.NET快取應用之頁輸出
頁輸出快取在記憶體中儲存處理後的ASP.NET頁的內容。這一機制允許ASP.NET向客戶端傳送頁響應,而不必再次經過頁處理生命週期。頁輸出緩 存對於那些不經常更改,但需要大量處理才能建立的頁特別有用。例如,如果建立大通訊量的網頁來顯示不需要頻繁更新的資料,頁輸出快取則可以極大地提高該頁 的效能。可以分別為每個頁配置頁快取,也可以在Web.config檔案中建立快取配置檔案。利用快取配置檔案,只定義一次快取設定就可以在多個頁中使用 這些設定。
頁輸出快取提供了兩種頁快取模型:整頁快取和部分頁快取。整頁快取允許將頁的全部內容儲存在記憶體中,並用於完成客戶端請求。部分頁快取允許快取頁的部分內容,其他部分則為動態內容。
部分頁快取可採用兩種工作方式:控制元件快取和快取後替換。控制元件快取有時也稱為分段快取,這種方式允許將資訊包含在一個使用者控制元件內,然後將該使用者控制元件標 記為可快取的,以此來快取頁輸出的部分內容。這一方式可快取頁中的特定內容,並不快取整個頁,因此每次都需重新建立整個頁。例如,如果要建立一個顯示大量 動態內容(如股票資訊)的頁,其中有些部分為靜態內容(如每週總結),這時可以將靜態部分放在使用者控制元件中,並允許快取這些內容。
快取後替換與控制元件快取正好相反。這種方式快取整個頁,但頁中的各段都是動態的。例如,如果要建立一個在規定時間段內為靜態的頁,則可以將整個頁設定 為進行快取。如果向頁新增一個顯示使用者名稱的Label控制元件,則對於每次頁重新整理和每個使用者而言,Label的內容都將保持不變,始終顯示快取該頁之前請求該 頁的使用者的姓名。但是,使用快取後替換機制,可以將頁配置為進行快取,但將頁的個別部分標記為不可快取。在此情況下,可以向不可快取部分新增Label控 件,這樣將為每個使用者和每次頁請求動態建立這些控制元件。
根據請求引數快取頁
除快取頁的單一版本外,ASP.NET頁輸出快取還提供了一些功能,可以建立根據請求引數的不同而不同的頁的多個版本。
自動移除資料
出於以下原因之一,ASP.NET可以從快取中移除資料:
由於伺服器上的記憶體不足,開始一個稱為“清理”的過程。
由於快取中的項已過期。
由於項的依賴項發生了更改。
為了幫助管理快取項,在將項從快取中移除時,ASP.NET會通知應用程式。
清理
清理是在記憶體不足時從快取中刪除項的過程。如果某些項在一段時間內未被訪問,或是在新增到快取中時被標記為低優先順序,則這些項會被移除。ASP.NET使用CacheItemPriority物件來確定要首先清理的項。
過期
除了清理外,在快取項過期時,ASP.NET會自動從快取中移除這些項。向快取新增項時,可以按下表中的描述設定其過期時間。
ASP.NET快取過期型別可調過期
指定某項自上次被訪問後多長時間過期。例如,可以將某項設定為自上次在快取中被訪問後20分鐘過期。
絕對過期
指定某項在設定的時間過期,而不考慮訪問頻率。例如,可以將某項設定為在6:00PM過期,或四小時後過期。
依賴項
可以將快取中某一項的生存期配置為依賴於其他應用程式元素,如某個檔案或資料庫。當快取項依賴的元素更改時,ASP.NET將從快取中移除該項。例 如,如果您的網站顯示一份報告,該報告是應用程式通過XML檔案建立的,您可以將該報告放置在快取中,並將其配置為依賴於該XML檔案。當XML檔案更改 時,ASP.NET會從快取中移除該報告。當程式碼請求該報告時,程式碼會先確定該報告是否在快取中,如果不在,程式碼會重新建立該報告。因此,始終都有最新版 本的報告可用。
對於ASP.NET快取應用,它支援下列描述的依賴項:
鍵依賴項
應用程式快取中的項儲存在鍵/值對中。鍵依賴項允許項依賴於應用程式快取中另一項的鍵。
如果移除了原始項,則具有鍵依賴關係的項也會被移除。例如,可以新增一個名為ReportsValid的快取項,然後快取若干個依賴於ReportsValid鍵的報告。當ReportsValid項被移除時,所有依賴於它的快取報告同樣也會從快取中移除。
檔案依賴項
快取中的項依賴於外部檔案。如果該檔案被修改或刪除,則快取項也會被移除。
SQL依賴項
快取中的項依賴於MicrosoftSQLServer2005、SQLServer2000或SQLServer7.0資料庫中表的更改。對於SQLServer2005,快取中的項可依賴於表中的某一行。
聚合依賴項
通過使用AggregateCacheDependency類快取中的項依賴於多個元素。如果任何依賴項發生更改,該項都會從快取中移除。
自定義依賴項
可以用您自己的程式碼建立的依賴關係來配置快取中的項。例如,可以建立一個自定義Web服務快取依賴項,當呼叫Web服務得到一個特定值時,該依賴項就會從快取中移除資料。
ASP.NET快取應用程式項移除通知
當項從應用程式快取中移除時,您可以收到通知。例如,如果有一個需要大量處理時間才能建立的項,當從快取中移除該項時,您會收到通知以便可以立即替換該項。這樣,下次請求該項時,使用者便不必等待處理該項。
ASP.NET快取概念以及ASP.NET快取應用的相關資訊就向你介紹到這裡,希望通過以上的敘述使你對什麼是ASP.NET快取概念,以及ASP.NET快取應用有所瞭解。來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-624691/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 淺析RunLoop原理及其應用OOP
- Java快取淺析Java快取
- [譯]淺析t-SNE原理及其應用
- 淺析ASP.NET頁面快取的幾點體會ASP.NET快取
- 零拷貝(Zero-copy) 淺析及其應用
- 淺析瀏覽器快取瀏覽器快取
- http快取策略以及強快取和協商快取淺析HTTP快取
- ASP.NET Web應用程式安全解決方案淺析ASP.NETWeb
- 淺談webscoket原理及其應用Web
- iOS 併發概念淺析iOS
- Java泛型應用淺析Java泛型
- 生產版本應用淺析
- 淺析volatile原理及其使用
- flutter 獲取應用快取以及清除快取Flutter快取
- [Docker應用系列·1]淺析JedisPoolDocker
- ASP.NET專案開發中應用程式異常處理淺析ASP.NET
- 快取問題(一) 快取穿透、快取雪崩、快取併發 核心概念快取穿透
- angular中的概念和原理淺析Angular
- JavaScript回撥函式應用淺析JavaScript函式
- 淺析VO、DTO、DO、PO的概念、區別和用處
- 淺析 vSAN 磁碟組架構和快取盤的“消亡”架構快取
- 快取穿透、快取擊穿、快取雪崩概念及解決方案快取穿透
- 淺解強快取和協商快取快取
- 淺析智慧交通有哪些應用場景?
- 網頁大圖片應用技巧淺析網頁
- 專案管理軟體應用淺析 (轉)專案管理
- Asp.Net MVC 快取ASP.NETMVC快取
- ASP.NET 2.0快取ASP.NET快取
- 淺析ASP.NET的IIS對映ASP.NET
- http快取機制及其原理HTTP快取
- 淺談HTTP快取HTTP快取
- 淺談Web快取Web快取
- 淺談 K-D Tree 及其進階應用
- 系統快取全解析4:應用程式資料快取快取
- 淺析雲原生應用安全組織架構架構
- 淺析網路應用中常用的加密手段加密
- 前端佈局方式彙總及概念淺析前端
- 一文讀懂快取穿透、快取擊穿、快取雪崩及其解決方案快取穿透