標籤:提高 客戶 資源 data new absolute add 注意 sim
- ache是如何工作的
Cache是分配在伺服器上的一個公用的記憶體片。
所謂公用指的cache只要一建立是任何一個用戶端瀏覽器都可以通過後台代碼訪問到它,它面向的是所有使用者,相對而言session也是伺服器上的一段記憶體,但他面向的是單個使用者。它是伺服器的一段記憶體塊,也就是說每個cache一經建立就佔用了伺服器資源的。所以從這點來說我們就可以說:並不是cache越多越好。
cache是有時間限制的,超過了伺服器設定的到期時間,它就會被伺服器回收。
c.cache可以存放任何對象
- Cache如何建立以及如何銷毀
建立cache
在。Net環境下通過Cache.Insert(stringkey,objecto)方法建立。其中key代表cache的ID,o代表存到cache裡的對象。
銷毀cache.
通過方法Cache.Remove(stringkey)其中key代表cache的ID.
調用cache.
Cache支援裝箱/拆箱操作。如你可以把一個DataSet對象ds通過Cache.Insert(“dsCache”,ds)的方式存到Cache中,可以通過拆箱操作DataSetds=(DataSet)Cache[“dsCache”]來訪問它。
什麼時候用cache
Cache一般用於資料較固定,用的較頻繁的地方。例如可以把進銷存系統中可以把產品資訊存入cache,在使用者調用產品資訊時通過調用cache即可,這樣從很大程度上減少了使用者與資料庫的互動,提高了系統的效能。反之,cache不適合用在資料變動快,使用範圍很窄的地方。例如把一個具體採購單存入cache中。
cache調用注意事項
Cache是有時間限制的。超過了伺服器設定的到期時間,就會被伺服器回收。當cache被回收後對應的記憶體塊就會被清空,再次通過cache[“cachekey”]訪問對象時返回的就是null值。所以以下這種調用就會出現異常
DataSetds=(DataSet)Cache[“cacheds”];
DataRowdr=ds.Table[0].Row[0];//出錯,ds為null值,不存在表0。
正確的寫法應該是:
DataSetds
If(Cache[“cacheds”]!=null)
{
ds=(DataSet)Cache[“cacheds”];
}
Else
{
ds=GetDsFromDataBase();
}
在.NET中,Cache的存在可以依賴多中方式,主要用到HttpContext.Current.Cache類
在這裡,我主要寫幾種依賴方式
1:不依賴任何條件
HttpContext.Current.Cache.Insert(stringcacheName,objectobj)
理論上是Cache會永久儲存,但是當伺服器重新啟動,記憶體緊張的時候也會丟失.
2:HttpContext.Current.Cache.Insert(stringkey,objectvalue,CacheDependencydependencies,DateTimeabsoluteExpiration,TimeSpanslidingExpiration);
//CacheDependency緩衝依賴項,absoluteExpiration絕對到期時間,slidingExpiration最後一次訪問的時間隔
//我們主要講兩種Cache依賴
2.1:檔案依賴,sosimple//只要檔案改動,Cache移出
HttpContext.Current.Cache.Insert(cacheName,ojb,newSystem.Web.Caching.CacheDependency(FilePath));
2.2:SqlServer資料庫依賴//我這裡是SQL2005
首先看資料庫通知是否可用,記得一定要開啟通知
Cache即快取,我想很多人對他的第一印象一定像我一樣,感覺他一定能提高系統得效能和運行速度。的確。Net推出cache的初衷確實是這樣的。
Cache在.net中的應用