提到緩衝相信大家都不陌生,因為一個好的大型網站都是具有緩衝功能的,這也就是告訴我們緩衝是提高速度的最有效,最直接的方法下面我們來開始學習一下緩衝的知識 緩衝大致分成三大類 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的引用