應用程式級的Cache和Application
使用者會話級的Session
application的缺點是在讀取時最好使用lock,unlock,損失效能的很。所以它適用那些不需要經常改動的,但又需要每個使用者都可以讀取到的.資料。
cache就是具有所有application的優點,然後又有自己的特點
1.基於依賴性的終止.使用關鍵字作為依賴項,關鍵字一變,cache內容無效並自動刪除。
2.鎖定管理:和application一樣,不過不是使用命令 ,內部自動完成鎖和解鎖
3.資源管理:不使用時,自動刪除
4.回調:很特殊哦,允許我們當刪除了cache後,仍然可以調用。
5.隱式插入,顯式插入:隱士的就是和application一樣,cache["myname"]="abc";
顯示的就是cache.insert().....
每個項目都有一些全域,常用的資訊,而這些資訊如果在每次使用時都載入,那必將耗費很大的資源,特別是對訪問壓力大的系統。因此,這個情況中,把這些全域資訊放到緩衝中是很必要的,放在緩衝中可以使得資料能夠很快的被讀取,節省了很多寶貴的CPU和IO。
項目中通常是用application 和cache來實現緩衝的功能。他們的用法分別為:
1)application:
application["test"] = "this is a application message!";
2)cache
Cache.Add("Key1", "Value");
兩種用法都很相似,都是採用名/值對的方式來儲存資料,而在讀取資料時也只要用 鍵 就可以擷取緩衝的值。
而2種相比,到底哪種更有優勢呢? 答案是CACHE在使用上更具有靈活性。特點如下:
1。自有的按時更新緩衝的機制
有的項目需要定時擷取最新資料的需求,如天氣預報,可能間隔10分鐘 就要讀取一次需求,那這可以利用CACHE本身的方法來實現。
//監視某個時間
public void CreateDependency(Object sender, EventArgs e) {
// Create a DateTime object.
DateTime dt = DateTime.Now.AddSeconds(10);
// Create a cache entry.
Cache["key1"] = "Value 1";
CacheDependency dependency = new CacheDependency(null, dt);
Cache.Insert("key2", "Value 2", dependency);
DisplayValues();
}
2.當緩衝的源修改時,可以重新更新緩衝。這個緩衝源可以是變數,也可以是檔案,或者目錄。
//監視某個變數
public void CreateDependency(Object sender, EventArgs e) {
// Create a DateTime object.
//DateTime dt = DateTime.Now.AddSeconds(10);
// Create a cache entry.
Cache["key1"] = "Value 1";
// Make key2 dependent on key1.
String[] dependencyKey = new String[1];
dependencyKey[0] = "key1";
CacheDependency dependency = new CacheDependency(null, dependencyKey, null);
Cache.Insert("key2", "Value 2", dependency);
DisplayValues();
}
3.同時以多種搭配來自動更新緩衝,如同時監視某個檔案,並且在指定間隔的時間內自動更新。
//監視某個時間和變數
public void CreateDependency(Object sender, EventArgs e) {
// Create a DateTime object.
DateTime dt = DateTime.Now.AddSeconds(10);
// Create a cache entry.
Cache["key1"] = "Value 1";
// Make key2 dependent on key1.
String[] dependencyKey = new String[1];
dependencyKey[0] = "key1";
CacheDependency dependency = new CacheDependency(null, dependencyKey, dt);
Cache.Insert("key2", "Value 2", dependency);
DisplayValues();
}
比起APPLICATION來,CACHE更顯得靈活。