我們經常會快取一些物件,比如遠端的,不能時時刻刻都去申請遠端物件和操作非常繁瑣的物件,這樣對系統資源和伺服器壓力產生了極大的影響,所以我們會選擇先把這些物件快取起來,然後用的時候隨時拿來用.但是快取的時候會發現如果快取的物件對了,層次就麻煩了,自己都不知道快取物件的結構,這是不可見的.而且快取的方式太多,可能團隊裡快取的方式不一樣操作起來也麻煩. 自己就寫了這麼乙個小的框架來解決快取的問題.
這是大概思路:通過繼承乙個基類來規定所有快取的方法,把快取結構儲存到xml裡,然後每個快取類都在遵守這樣的規定下擴充套件自己的功能.快取基類莫過於,訪問物件:
namespace cwf.cacheservice
///
/// 獲取乙個已快取的物件
///
/// xpath樹節點
/// objec
public virtual object recevecacheobj(string xpath)
///
/// 獲取已快取物件的陣列
///
/// xpath樹節點
/// object
public virtual object recevecacheobjlist(string xpath)
///
/// 取消快取
///
/// xpath樹節點
public virtual void removecacheobj(string xpath)}}
定義了3個方法,存單個物件,取單個物件,取乙個物件陣列.
然後就是對快取的整體操作:
通過這個快取操作類我們可以方便的操作每乙個自己擴充套件的基類,然後實現訪問物件,這裡我們定義的快取物件儲存在自己的框架配置檔案裡,這樣可以把快取類和實際的邏輯操作完全解耦合.而且可以任意更換快取操作類而不需要修改一句**.
public class cache
private cache(string cachename)
///
/// 獲取快取物件
///
///
public static acache getcwfcaheservice()}}
return cache;
}///
/// 獲取快取物件
///
///
public static acache getcwfcaheservice(string cachename)}}
return cache;}}
}下面是乙個擴充套件的簡單的快取操作類,通過hashtable的靜態變數來操作快取,也可以自己擴充套件自己的操作類來實際操作快取.
using system;
using system.collections.generic;
using system.text;
using system.collections;
using system.xml;
using system.security;
public class samplecache:cwf.cacheservice.acache
return obj;
}///
/// 獲取快取物件陣列
///
///
///
public override object recevecacheobjlist(string xpath)
return objlist;
}///
/// 移除乙個已儲存的物件
///
///
public override void removecacheobj(string xpath)}}
if (node.attributes["guid"].value != null)
xmldoc.firstchild.removechild(node);
}///
/// 確認xml數的存在,不存在則建立
///
/// }}
快取操作這裡就完了,不管你是用cach還是static來操作快取或者用其它第三方控制項都沒關係,這都可以滿足你的要求,當然這也是個簡單的案例,思路 是這樣可以自己擴充套件,如果轉貼請文明轉貼,出處
Hibernate框架快取
一級快取 hibernate框架一級快取的特點 1.它是hibernate自帶的,不用我們手動配置。2.它是以k v對的方式儲存資料,以key去獲得po物件。3.只在同乙個中session共享。由於是hibernate自身就帶有的,所以使用時不需要配置xml的工作,只要知道在同乙個session中的...
Yii框架 快取
1 yii框架的快取 主要就是 memcache 和 cache 兩種 yii的自帶快取都繼承ccache 類,在使用上基本沒有區別 2 使用方法 1 在config配置檔案main.php檔案中配置如下 cache array class system.caching.cfilecache dir...
zend framework框架分析 快取
zend快取被劃分為兩個模組 前端 frontend 和後端 backend 前端 frontend 用於實現不同粗粒程度的快取.按照粗粒程度有 對頁面輸出快取,可以指定快取開始位置,程式執行完自動結束快取,如果快取命中則直接輸出快取並終止程式執行 die 可以根據頁面引數 get,post,coo...