缓存之SqlDependency
指定缓存失效的数据库依赖项。可以具体到数据库和表。
具体配置具体要经过几个步骤:
1. 注册连接池
命令:aspnet_regsql -S 192.168.30.220"SQL2K -U sa -P sa -ed -d pubs -et -t test专门注册连接池的工具 在sql数据库的数据 库改变了,才改变缓存。
参数:
_s 制定注册的服务器; _u和 _p 说明是sql数据库的授权模式; _d 指定数据库的名字; _ed 说明缓存生效。
示例:
aspnet_regsql -S 192.168.30.220"SQL2K -U sa -P sa -ed -d pubs -et -t test
进行outputcache配置
<%@ OutputCache SqlDependency="pubs:test" Duration="100" VaryByParam="id"%>
2. 设置WebConfig
<connectionStrings>
<add name="mySqlServer" connectionString="Server=192.168.30.220"SQL2K;Database=pubs;uid=sa;pwd=sa;"/>
</connectionStrings>
3.
<caching>
<sqlCacheDependency enabled="true">
<databases>
<add connectionStringName="mySqlServer" pollTime="500" />
</databases>
</sqlCacheDependency>
</caching>
name:必须是数据库的名字; connectionStringName:连接字符串的名称
除了可以建立数据库依赖,还可以建立文件依赖或者其他依赖
http://www.cnblogs.com/couhujia/archive/2009/09/22/1572016.html
<%@ OutputCache Duration="3600" VaryByParam="None" SqlDependency= "Northwind:Products;Northwind:Categories" %>
Or u can use the SqlCacheDependency class. It's more simplier as SqlDependency. Here is an example:
SqlCacheDependency dependency = new SqlCacheDependency(comm);
int expire = 3;
DateTime exp = DateTime.Now.AddMinutes(expire);
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetExpires(exp);
Response.Cache.SetValidUntilExpires(true);
Response.AddCacheDependency(dependency);
The main defferent between this and Page Fragemant Cache is that:
- If you use SqlCacheDependency, the server watch only those datas, which is in your query result
- But if u use Outputcache directive or the SqlDataSource sqldependency attribute, the sql server watch all changes in the table!!!
http://forums.asp.net/t/991603.aspx
SqlCacheDependency
配置文件中的配置
<system.web>
<caching>
<sqlCacheDependency enabled="true" pollTime="轮询时间(毫秒)">
<databases>
<add name="名字" connectionStringName="连接字符串的名字" />
</databases>
</sqlCacheDependency>
<!-- 如果是SqlServer2005的话,则只需如下设置,因为SqlServer支持基于通知的缓存失效
<sqlCacheDependency enabled="true" />
-->
</caching>
</system.web>
如果不是SqlServer2005的话,应该使用aspnet_regsql注册一下
aspnet_regsql.exe -S "server" -E -d "database" -ed
aspnet_regsql.exe -S "server" -E -d "database" -et -t "table"
如果是Sql验证的话要把-E换成,-U(用户名),-P(密码)
http://geekswithblogs.net/chrishan/archive/2007/01/11/103370.aspx
http://hi.baidu.com/wjinbd/blog/item/69a49694b16b2a41d1135eaf.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY