C Cache何時使用及使用方法

2021-06-22 04:35:06 字數 1434 閱讀 3373

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)  

else  

datarow dr = ds.table[0].row[0];

C Cache何時使用及使用方法

cache 即快取記憶體.那麼cache是怎麼樣提高系統效能與執行速度呢?是不是在任何情況下用cache都能提高效能?是不是cache用的越多就越好呢?我在近 期開發的專案中有所體會,寫下來當作總結也希望能跟大家一起 有錯誤的地方希望大家批評指正。1.cache 是怎麼樣工作的?cache 是分配在...

C Cache何時使用及使用方法

cache 即快取記憶體.那麼cache是怎麼樣提高系統效能與執行速度呢?是不是在任何情況下用cache都能提高效能?是不是cache用的越多就越好呢?我在近 期開發的專案中有所體會,寫下來當作總結也希望能跟大家一起 有錯誤的地方希望大家批評指正。1.cache 是怎麼樣工作的?cache 是分配在...

C Cache何時使用及使用方法

cache 即快取記憶體.那麼cache是怎麼樣提高系統效能與執行速度呢?是不是在任何情況下用cache都能提高效能?是不是cache用的越多就越好呢?我在近 期開發的專案中有所體會,寫下來當作總結也希望能跟大家一起 有錯誤的地方希望大家批評指正。1.cache 是怎麼樣工作的?cache 是分配在...