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

ASP.NET緩存簡述

2013-11-13 09:58:57  來源: .NET編程 

  以前對緩存的認識比較零碎最近做的行業新聞項目可能會大量應用的緩存技術故將緩存技術再重新整理了下使我自己對緩存又有了一個全新的認識同時也給大家分享下

   頁輸出緩存

   全部輸出緩存

  頁輸出緩存在內存中存儲處理後的 ASPNET 頁的內容這一機制允許 ASPNET 向客戶端發送頁響應而不必再次經過頁處理生命周期頁輸出緩存對於那些不經常更改但需要大量處理才能創建的頁特別有用

  要實現頁輸出緩存也很簡單如你要對defaultaspx頁面實施頁面緩存那麼你只需在defualtaspx頁面中添加使用OutputCache指令OutputCache有多個屬性其中兩個必須的屬性是Duration和VaryByParamDuration設置了緩存的過期時間單位為秒VaryByParam允許我們緩存頁面的不同版本一般情況下VaryByParam設置為none具體示例如下

  <%@ OutputCache Duration= VaryByParam=none %>

  這個設置就是說明緩存時間是並且不分版本其實加上了這句就已經完成了頁輸出緩存設置了為了看下效果我在defaultaspxcs文件Page_Load方法中添加了ResponseWrite(DateTimeNowToString(yyyyMMdd HH:mm:ss))一句浏覽頁面後不斷刷新發現時間並不會改變當緩存過期時間(秒)到點了刷新才會引起頁面的變化

  上面已經實現了的頁輸出緩存但是有一個問題現在是一個網頁設置緩存可以放在defaultaspx中但是如果一個網站有成千上萬個網頁並且每個頁面都需要設置緩存機制一旦緩存時間需要修改時就會涉及到要修改千萬個網頁這樣做肯定是很麻煩的事情所以需要將網頁的緩存設置放在一個公共地方一旦需要修改的時候調整起來比較方便剛好的nfig文件中可以設置頁面緩存如下

  <systemweb>

  <caching>

  <outputCacheSettings>

  <outputCacheProfiles>

  <add name=pageCache duration= varyByParam=none enabled =true/>

  </outputCacheProfiles>

  </outputCacheSettings>

  </caching>

  </systemweb>

  上面的意思為過期時間為不根據頁面參數緩存

  頁面中調用此設置如下

  <%@ OutputCache CacheProfile=pageCache %>

  這樣就完成了頁輸出緩存才配置

   片段緩存

  有些網頁可能大部分都不需要經常變更比如頁面頭部和頁腳但是正文部分可能經常變動像這些部分不經常變動而部分又經常變動的網頁可以采取片段緩存的辦法將不怎麼變動的部分做成一個單獨的用戶控件(ascx)調用的時間將這個ascx單獨設置緩存就能達到一個網頁中經常變動不緩存而不經常變動的部分緩存的效果了

   緩存後替換

  這種方式與片段緩存恰好相反是將整個頁面先緩存然後將經常變動的地方單獨做成一個ascx並且這個ascx不設置緩存如登錄慧遠保銀首頁給每個人顯得的內容都是一樣的唯獨不一樣的就是在某個地方顯示了當前的用戶名不一樣這種情況就可以采取緩存後替換的辦法先將整個網頁緩存當然緩存下來的用戶名可能是上個用戶的但是采取緩存後替換的方法將你自己的用戶名替換上個用戶名就能得到很好的效果了

   應用程序緩存

  第一部分說到的都是關於網頁的緩存緩存還提供另外一種緩存方式即應用程序緩存比如某個數據列表的計算需要花費很長時間而且很浪費服務器資源並且此列表不是需要經常更新的那麼我們可以先將此數據列表事先key/value的方式緩存在內存中當有需要此數據時可以以key的方式去尋找此數據列表

  如有一個DataSet對象ds將它存入緩存的辦法是Cache[ds]=ds當程序需要調用這個ds對象的時候直接用Cache[ds]即可查詢到數據值

  除了Cache[ds]=ds將數據緩存外還提供了insert和add這兩個方法將數據項添加到緩存因為這兩個函數功能大致相同唯一區別就是insert函數有替換功能所以僅以insert作為示例簡單說明下

  Insert方法有四個重載函數
 

  對上面四個重載函數我作簡要說明

    與Cache[ds]=ds類似就是將數據以key/value的形式添加到緩存

    第二個重載函數多了一個CacheDependency類型的參數這個參數的意義是指定添加數據的依賴項比如某個數據列表是從一個xml加載進來的現在將此數據的依賴項設置為此xml文件當xml文件修改後此數據再緩存中自動刪除下次調用時重新加入緩存這樣可以保證緩存中的數據足夠新

    第三個重載函數不僅指明了依賴項還指明了緩存的有效時間即在依賴項一直沒有修改的情況下過了有效時間緩存數據依舊自動刪除

    第四個重載函數是多了一個優先級和委托


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