什麼是Cache
來源:互聯網
上載者:User
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];