C# Cache何時使用及使用方法


 

     Cache 即高速緩存.那么cache是怎么樣提高系統性能與運行速度呢?是不是在任何情況下用cache都能提高性能?是不是cache用的越多就越好呢?我在近 期開發的項目中有所體會,寫下來當作總結也希望能跟大家一起探討探討,有錯誤的地方希望大家批評指正。
  1.Cache 是怎么樣工作的?
  Cache 是分配在服務器上的一個公共的內存片。
  所謂公共指的cache只要一創建是任何一個客戶端瀏覽器都可以通過后台代碼訪問到它,它面向的是所有用戶,相對而言session也是服務器上的一 段內存,但他面向的是單個用戶。它是服務器的一段內存塊,也就是說每個cache一經創建就占用了服務器資源的。所以從這點來說我們就可以說:並不是 cache越多越好。  
  cache 是有時間限制的,超過了服務器設定的過期時間,它就會被服務器回收。
  cache 可以存放任何對象
  
  2.Cache 怎么樣創建以及怎么樣銷毀  
  創建cache  
  在DotNet環境下通過Cache.Insert(string key,object o)方法創建。
      其中key 代表cache的ID,o代表存到cache里的對象。
  
  銷毀cache 
  通過方法Cache.Remove(string key)
      其中key 代表cache的 ID.
  
  調用cache  
  Cache支持裝箱/拆箱操作。如你可以把一個DataSet對象ds通過Cache.Insert(“dsCache”,ds)的方式存到Cache中,可以通過拆箱操作 DataSet ds = (DataSet)Cache[“dsCache”]來訪問它。
  
  3.什么時候用cache  
  Cache 一般用於數據較固定,用的較頻繁的地方。例如可以把進銷存系統中可以把產品信息存入cache,在用戶調用產品信息時通過調用cache即可,這樣從很大 程度上減少了用戶與數據庫的交互,提高了系統的性能。反之,cache不適合用在數據變動快,使用范圍很窄的地方。例如把一個具體采購單存入 cache中。
  
  4.cache 調用注意事項  
  Cache是有時間限制的。超過了服務器設置的過期時間,就會被服務器回收。當cache被回收后對應的內存塊就會被清空,再次通過cache[“cachekey”]訪問對象時返回的就是null值。所以以下這種調用就會出現異常
  
  DataSet ds = (DataSet)Cache[“cacheds”];  
  DataRow dr = ds.Table[0].Row[0]; //出錯,ds為null值,不存在表0。
  
  正確的寫法應該是:  
  DataSet ds;  
  if(Cache[“cacheds”] != null)  
  {  
      ds = (DataSet)Cache[“cacheds”];  
  }  
  else  
  {  
      ds= GetDsFromDataBase();  
  }  
  DataRow dr = ds.Table[0].Row[0];


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM