程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> PetShop之ASP.NET緩存

PetShop之ASP.NET緩存

編輯:.NET實例教程
     Filed under: Design & Pattern — bruce zhang @ 6:20 pm
  《解剖PetShop》系列之四
  
  四 PetShop之ASP.Net緩存
  
  如果對微型計算機硬件系統有足夠的了解,那麼我們對於Cache這個名詞一定是耳熟能詳的。在CPU以及主板的芯片中,都引入了這種名為高速緩沖存儲器(Cache)的技術。因為Cache的存取速度比內存快,因而引入Cache能夠有效的解決CPU與內存之間的速度不匹配問題。硬件系統可以利用Cache存儲CPU訪問概率高的那些數據,當CPU需要訪問這些數據時,可以直接從Cache中讀取,而不必訪問存取速度相對較慢的內存,從而提高了CPU的工作效率。軟件設計借鑒了硬件設計中引入緩存的機制以改善整個系統的性能,尤其是對於一個數據庫驅動的Web應用程序而言,緩存的利用是不可或缺的,畢竟,數據庫查詢可能是整個Web站點中調用最頻繁但同時又是執行最緩慢的操作之一,我們不能被它老邁的雙腿拖緩我們前進的征程。緩存機制正是解決這一缺陷的加速器。
  
  4.1 ASP.Net緩存概述
  
  作為.Net框架下開發Web應用程序的主打產品,ASP.Net充分考慮了緩存機制。通過某種方法,將系統需要的數據對象、Web頁面存儲在內存中,使得Web站點在需要獲取這些數據時,不需要經過繁瑣的數據庫連接、查詢和復雜的邏輯運算,就可以“觸手可及”,如“探囊取物”般容易而快速,從而提高整個Web系統的性能。
  
  ASP.Net提供了兩種基本的緩存機制來提供緩存功能。一種是應用程序緩存,它允許開發者將程序生成的數據或報表業務對象放入緩存中。另外一種緩存機制是頁輸出緩存,利用它,可以直接獲取存放在緩存中的頁面,而不需要經過繁雜的對該頁面的再次處理。
  
  應用程序緩存其實現原理說來平淡無奇,僅僅是通過ASP.Net管理內存中的緩存空間。放入緩存中的應用程序數據對象,以鍵/值對的方式存儲,這便於用戶在訪問緩存中的數據項時,可以根據key值判斷該項是否存在緩存中。
  
  放入在緩存中的數據對象其生命周期是受到限制的,即使在整個應用程序的生命周期裡,也不能保證該數據對象一直有效。ASP.Net可以對應用程序緩存進行管理,例如當數據項無效、過期或內存不足時移除它們。此外,調用者還可以通過CacheItemRemovedCallback委托,定義回調方法使得數據項被移除時能夠通知用戶。
  
  在.Net Framework中,應用程序緩存通過System.Web.Caching.Cache類實現。它是一個密封類,不能被繼承。對於每一個應用程序域,都要創建一個Cache類的實例,其生命周期與應用程序域的生命周期保持一致。我們可以利用Add或Insert方法,將數據項添加到應用程序緩存中,如下所示:
  Cache[”First”] = “First Item”;
  Cache.Insert(”Second”, “Second Item”);
  
  我們還可以為應用程序緩存添加依賴項,使得依賴項發生更改時,該數據項能夠從緩存中移除:
  string[] dependencIEs = {”Second”};
  Cache.Insert(”Third”, “Third Item”,
  new System.Web.Caching.CacheDependency(null, dependencIEs));
  
  與之對應的是緩存中數據項的移除。前面提到ASP.Net可以自動管理緩存中項的移除,但我們也可以通過代碼編寫的方式顯式的移除相關的數據項:
  Cache.Remove(”First”);
  
  相對於應用程序緩存而言,頁輸出緩存的應用更為廣泛。它可以通過內存將處理後的ASP.Net頁面存儲起來,當客戶端再一次訪問該頁面時,可以省去頁面處理的過程,從而提高頁面訪問的性能,以及Web服務器的吞吐量。例如,在一個電子商務網站裡,用戶需要經常查詢商品信息,這個過程會涉及到數據庫訪問以及搜索條件的匹配,在數據量較大的情況下,如此的搜索過程是較為耗時的。此時,利用頁輸出緩存就可以將第一次搜索得到的查詢結果頁存儲在緩存中。當用戶第二次查詢時,就可以省去數據查詢的過程,減少頁面的響應時間。
  
  頁輸出緩存分為整頁緩存和部分頁緩存。我們可以通過@OutputCache指令完成對Web頁面的輸出緩存。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved