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的引用

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