.net

强大的SqlCacheDependency
SqlCacheDependency在保证更新同步的前提下通过缓存减小数据库负载。那么如何使用它呢?
1、 使数据库支持SqlCacheDependency

在.Net Framework 2.0 的安装目录下(通常是WINDOWS\Microsoft.NET\Framework\v2.0.XXXXX),有一个aspnet_regsql.exe,这个命令行工具可以帮助我们使数据库支持SqlCacheDependency特性,

首先:“aspnet_regsql –S 服务器名 –U 登陆名 ID –P 密码 –d 数据库名 –ed”,这个命令使指定数据库支持SqlCacheDependency,
然后我们再加入要追踪的数据表:“aspnet_regsql –S 服务器名 –U 登陆名 ID –P 密码 –d 数据库名 –t 追踪的数据表 –et”,这个命令使指定的Table支持SqlCacheDependency。
指令运行后,在指定的数据库中会新建一个Table,叫做“AspNet_SqlCacheTablesForChangeNotification”,这个表有三个字段,“tableName”记录要追踪的数据表的名称,“notificationCreated”记录开始追踪的时间,“changeId”是一个int类型的字段,每当追踪的数据表的数据发生变化时,这个字段的值就加1。
它还会在指定的数据库中增加几个存储过程,用来让ASP.NET引擎查询追踪的数据表的情况。
然后,它会给我们要追踪的Table加上几个Trigger,分别对应到Insert、Update、Delete操作,这几个Trigger的语句非常简单,就是把“AspNet_SqlCacheTablesForChangeNotification”表中对应“tableName”字段为这个追踪的表的名称的记录的“changeId”字段加上一个1。
ASP.NET引擎通过执行它加上的存储过程“AspNet_SqlCachePollingStoredProcedure”,这个存储过程直接返回“AspNet_SqlCacheTablesForChangeNotification”表的内容,让ASP.NET引擎知道哪个表的数据发生的变化。默认每500毫秒执行这个存储过程一次,不过可以在web.config里面修改这个间隔时间。

2、 web.config配置
< system.web >
<!-- 配置Cache 结点 , 使网站 支持SqlCacheDependency -->
< cache >
< sqlCacheDependency enabled = " true " pollTime = " 500 " >
< databases >
< add name = " CacheDB " connectionStringName = " CS " />
</ databases >
</ sqlCacheDependency >
</ cache >
</ system.web >
3、 在页面上的outputCache标签中指定SqlCacheDependency特性:
<% @ OutputCache Duration ="9999" VaryByParam ="None" SqlDependency ="CacheDB:TableName" %>
其中TableName为追踪的表名,只要在这个追踪的Table上执行了Insert、Update、Delete操作,数据表上的Trigger就会将数据库中“ AspNet_SqlCacheTablesForChangeNotification”表的相应记录的相应“changId”字段值修改,然后ASP.NET 引擎就会通过获取新的值来得知追踪的Table的内容发生了变化,自动使这个页面的cache失效
最后
同样的网站,同样的功能,在 安全性 、 并发性 、 容错性 很多方面都会有所不同,而网站的好坏并不是看他有多少花哨的功能或多么华丽的界面,而是他是否实用、稳定、效率、安全。 ASP.NET 博大精深,看来好多东西,都是“越学越浅”的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值