《解剖PetShop》系列之四:PetShop之ASP.NET緩衝

來源:互聯網
上載者:User

如果對微電腦硬體系統有足夠的瞭解,那麼我們對於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");

聯繫我們

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

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

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.