熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

ASP.NET緩存概念及其應用淺析

2013-11-13 10:08:09  來源: .NET編程 

  ASPNET緩存概念是什麼呢?通常應用程序可以將那些頻繁訪問的數據以及那些需要大量處理時間來創建的數據存儲在內存中從而提高性能例如如果應用程序使用復雜的邏輯來處理大量數據然後再將數據作為用戶頻繁訪問的報表返回避免在用戶每次請求數據時重新創建報表可以提高效率同樣如果應用程序包含一個處理復雜數據但不需要經常更新的頁則在每次請求時服務器都重新創建該頁會使工作效率低下

  在這些情況下了解了ASPNET緩存概念之後為了幫助您提高應用程序的性能ASPNET緩存使用兩種基本的緩存機制來提供緩存功能第一種機制是應用程序緩存它允許您緩存所生成的數據如 DataSet 或自定義報表業務對象第二種機制是頁輸出緩存它保存頁處理輸出並在用戶再次請求該頁時重用所保存的輸出而不是再次處理該頁

  ASPNET緩存應用程序

  應用程序緩存提供了一種編程方式可通過鍵/值對將任意數據存儲在內存中使用應用程序緩存與使用應用程序狀態類似但是與應用程序狀態不同的是應用程序緩存中的數據是易失的即數據並不是在整個應用程序生命周期中都存儲在內存中使用應用程序緩存的優點是由 ASPNET 管理緩存它會在項過期無效或內存不足時移除緩存中的項還可以配置應用程序緩存以便在移除項時通知應用程序有關更多信息請參見 緩存應用程序數據

  使用應用程序緩存的模式是確定在訪問某一項時該項是否存在於緩存中如果存在則使用如果該項不存在則可以重新創建該項然後將其放回緩存中這一模式可確保緩存中始終有最新的數據

  ASPNET緩存應用之頁輸出

  頁輸出緩存在內存中存儲處理後的 ASPNET 頁的內容這一機制允許 ASPNET 向客戶端發送頁響應而不必再次經過頁處理生命周期頁輸出緩存對於那些不經常更改但需要大量處理才能創建的頁特別有用例如如果創建大通信量的網頁來顯示不需要頻繁更新的數據頁輸出緩存則可以極大地提高該頁的性能可以分別為每個頁配置頁緩存也可以在 nfig 文件中創建緩存配置文件利用緩存配置文件只定義一次緩存設置就可以在多個頁中使用這些設置

  頁輸出緩存提供了兩種頁緩存模型整頁緩存和部分頁緩存整頁緩存允許將頁的全部內容保存在內存中並用於完成客戶端請求部分頁緩存允許緩存頁的部分內容其他部分則為動態內容

  部分頁緩存可采用兩種工作方式控件緩存和緩存後替換控件緩存有時也稱為分段緩存這種方式允許將信息包含在一個用戶控件內然後將該用戶控件標記為可緩存的以此來緩存頁輸出的部分內容這一方式可緩存頁中的特定內容並不緩存整個頁因此每次都需重新創建整個頁例如如果要創建一個顯示大量動態內容(如股票信息)的頁其中有些部分為靜態內容(如每周總結)這時可以將靜態部分放在用戶控件中並允許緩存這些內容

  緩存後替換與控件緩存正好相反這種方式緩存整個頁但頁中的各段都是動態的例如如果要創建一個在規定時間段內為靜態的頁則可以將整個頁設置為進行緩存如果向頁添加一個顯示用戶名的 Label 控件則對於每次頁刷新和每個用戶而言Label 的內容都將保持不變始終顯示緩存該頁之前請求該頁的用戶的姓名但是使用緩存後替換機制可以將頁配置為進行緩存但將頁的個別部分標記為不可緩存在此情況下可以向不可緩存部分添加 Label 控件這樣將為每個用戶和每次頁請求動態創建這些控件

  根據請求參數緩存頁

  除緩存頁的單一版本外ASPNET 頁輸出緩存還提供了一些功能可以創建根據請求參數的不同而不同的頁的多個版本

  自動移除數據

  出於以下原因之一ASPNET 可以從緩存中移除數據

  由於服務器上的內存不足開始一個稱為清理的過程

  由於緩存中的項已過期

  由於項的依賴項發生了更改

  為了幫助管理緩存項在將項從緩存中移除時ASPNET 會通知應用程序

  清理

  清理是在內存不足時從緩存中刪除項的過程如果某些項在一段時間內未被訪問或是在添加到緩存中時被標記為低優先級則這些項會被移除ASPNET 使用 CacheItemPriority 對象來確定要首先清理的項

  過期

  除了清理外在緩存項過期時ASPNET 會自動從緩存中移除這些項向緩存添加項時可以按下表中的描述設置其過期時間

  ASPNET緩存過期類型

  可調過期

  指定某項自上次被訪問後多長時間過期例如可以將某項設置為自上次在緩存中被訪問後 分鐘過期

  絕對過期

  指定某項在設定的時間過期而不考慮訪問頻率例如可以將某項設置為在 : PM 過期或四小時後過期

  依賴項

  可以將緩存中某一項的生存期配置為依賴於其他應用程序元素如某個文件或數據庫當緩存項依賴的元素更改時ASPNET 將從緩存中移除該項例如如果您的網站顯示一份報告該報告是應用程序通過 XML 文件創建的您可以將該報告放置在緩存中並將其配置為依賴於該 XML 文件當 XML 文件更改時ASPNET會從緩存中移除該報告當代碼請求該報告時代碼會先確定該報告是否在緩存中如果不在代碼會重新創建該報告因此始終都有最新版本的報告可用

  對於ASPNET 緩存應用它支持下列描述的依賴項

  鍵依賴項

  應用程序緩存中的項存儲在鍵/值對中鍵依賴項允許項依賴於應用程序緩存中另一項的鍵

  如果移除了原始項則具有鍵依賴關系的項也會被移除例如可以添加一個名為 ReportsValid 的緩存項然後緩存若干個依賴於 ReportsValid 鍵的報告當 ReportsValid 項被移除時所有依賴於它的緩存報告同樣也會從緩存中移除

  文件依賴項

  緩存中的項依賴於外部文件如果該文件被修改或刪除則緩存項也會被移除

  SQL 依賴項

  緩存中的項依賴於 Microsoft SQL Server SQL Server 或 SQL Server 數據庫中表的更改對於 SQL Server 緩存中的項可依賴於表中的某一行

  聚合依賴項

  通過使用 AggregateCacheDependency 類緩存中的項依賴於多個元素如果任何依賴項發生更改該項都會從緩存中移除

  自定義依賴項

  可以用您自己的代碼創建的依賴關系來配置緩存中的項例如可以創建一個自定義 Web 服務緩存依賴項當調用 Web 服務得到一個特定值時該依賴項就會從緩存中移除數據

  ASPNET緩存應用程序項移除通知

  當項從應用程序緩存中移除時您可以收到通知例如如果有一個需要大量處理時間才能創建的項當從緩存中移除該項時您會收到通知以便可以立即替換該項這樣下次請求該項時用戶便不必等待處理該項

  ASPNET緩存概念以及ASPNET緩存應用的相關信息就向你介紹到這裡希望通過以上的敘述使你對什麼是ASPNET緩存概念以及ASPNET緩存應用有所了解


From:http://tw.wingwit.com/Article/program/net/201311/12664.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.