Sql緩存依賴的實例

提到緩存相信大家都不陌生,因爲一個好的大型網站都是具有緩存功能的,這也就是告訴我們緩存是提高速度的最有效,最直接的方法下面我們來開始學習一下緩存的知識 緩存大致分成三大類 1.頁面緩存 1.

2.

帶參數 3.利用配置文件爲每個頁面寫緩存,要緩存的頁面只需引用即可 在頁面只需引用即可即 %@outputCache CacheProfile="CacheProfile1"%注意CacheProfile的名稱 2.文件依賴緩存 依賴緩存就是依賴某個項目或者文件,在這裏我們依賴的文件 比如我們依賴靜態文件, 首先我們建立一個靜態頁面,在建立一個顯示的aspx頁面在頁面中添加lable標籤顯示時間,添加button按鈕也是顯示時間 然後寫一個方法利用Caching來緩存,在這裏說的大家可定有點稀裏糊塗的,那麼我把我做的代碼寫出來: protected void Page_Load(object sender, EventArgs e) { if(!IsPostBack) { this.Label1.Text = ShowTime(); } } protected void Button1_Click(object sender, EventArgs e) { this.Label1.Text = ShowTime(); } protected string ShowTime() { //鍵 string key = "TimeNow"; //獲取緩存的值 string times =(string )HttpRuntime.Cache[key]; if (string.IsNullOrEmpty(times)) { //獲取失敗 System.Web.Caching.CacheDependency dep = new CacheDependency(Server.MapPath("CacheDenpendency.aspx.htm")); times = DateTime.Now.ToString(); Cache.Insert(key, times,dep); //Server.MapPath("~/CacheDenpendency.aspx.htm") } return times; } 在這裏注意文件緩存依賴的類以及注意system.web.caching的引用 文件緩存依賴類 CacheDenpendecy 然後插入到Cache緩存中 3.sql緩存依賴 1. 首先要在sql數據庫裏建立緩存依賴表執行順序爲 一 : cmd進入到dos然後回到根目錄 cd ../.. 二: cd 複製目錄(Windows/Microsoft.NET/Framework/v2.0.50727) 三: 然後運行 sqlnet_regsql.exe -s(代表服務器是大寫字母) localhost -E(代表window身份認證) -d 數據庫名稱 -ed(啓動) 回車 四:sqlnet_regsql.exe -s(代表服務器是大寫字母) localhost -E(代表window身份認證) -d 數據庫名稱 -ed(啓動) -t 表 -et 回車 多個表的話繼續。。。。。 2.在我們項目中開始操作首先配置文件裏配置sql緩存依賴 在 下配置如:

 

在在下配置這個sql緩存依賴的數據連接字符串

 

 

3.開始在項目中建類庫緩存接口類 ICacheDenpenDency, 實現類TableCacheDependency,工廠類 CacheDenpendencyFactory 工廠類中包括一個訪問實體緩存的類和一個外觀模式調用緩存依賴對象的類 源代碼如下 一 public interface ICacheDenpendency { //返回一個連鎖依賴集合 AggregateCacheDependency GetDenpendency(); } 二: public class TableCache:ICacheDependency.ICacheDenpendency { //聚合緩存依賴對象 public AggregateCacheDependency GetDenpendency() { string dbName = ConfigurationSettings.AppSettings["MyCache"]; string tbname = ConfigurationSettings.AppSettings["tables"]; string [] tables = tbname.Split('|'); AggregateCacheDependency dep = new AggregateCacheDependency(); foreach (string ts in tables) { dep.Add(new SqlCacheDependency(dbName, ts)); } return dep; } } 三:返回實體接口的類 public class CacheAccess { private static readonly string path = ConfigurationSettings.AppSettings["CacheTable"]; //返回緩存依賴的接口 public static ICacheDependency.ICacheDenpendency GetDenpendency() { string className = path + ".TableCache"; return(ICacheDependency.ICacheDenpendency)Assembly.Load(path).CreateInstance(className); } } 四:外觀模式調用工廠返回依賴實體 /// /// 利用外觀模式調用它,因爲我們需要的是緩存依賴對象,而不是緩存接口 /// public class Facade { //獲得緩存實體的路徑即緩存依賴的表的名稱(類的名稱) private static readonly string path = ConfigurationSettings.AppSettings["CacheTable"]; //緩存依賴對象 public static AggregateCacheDependency GetDenpendecy() { if (string.IsNullOrEmpty(path)) { //如果緩存依賴對象爲空 return null; } else { //外觀模式,因爲我們不需要緩存依賴的接口對象而是要接口對象的方法 //接口對象是類的實體表的實體,然後調用它的方法 return CacheAccess.GetDenpendency().GetDenpendency(); } } } 五:頁面調用 protected string ShowTime() { string Key = "timeNow"; string times =(string)HttpRuntime.Cache[Key]; if (string.IsNullOrEmpty(times)) { times= DateTime.Now.ToString(); Cache.Insert(Key, times, CacheDenpendencyFactory.cs.Facade.GetDenpendecy()); } return times; } 注意system.web.Caching的引用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章