创建依赖于数据库中表或行的缓存项(即缓存数据)。当表中或特定行中发生更改时,带有依赖项的项(缓存数据)便会失效,并会从缓存中移除。并重新读取数据到缓存中,这时候应用程序获取的是最新的数据.
特点:
SQL 缓存依赖项可用于应用程序缓存和页输出缓存。
可以在网络园(一台服务器上存在多个处理器)或网络场(多台服务器运行同一应用程序)中使用 SQL 缓存依赖项。
与 SQL 缓存依赖项关联的数据库操作比较简单,因此不会给服务器带来很高的处理成本。
打开Visual Studio命令提示:
1):为SQL Server中数据库Northwind的Customers表启用缓存依赖项(依赖项名为customers,由-et -t指定):
必须注意下面的大小写之分:
Setting environment for using Microsoft Visual Studio 2008 x86 tools.
d:\Program Files\Microsoft Visual Studio 9.0\VC>aspnet_regsql.exe -S localhost -U sa -P admin -ed -d Northwind -et -t Orders
为 SQL 缓存依赖项启用该数据库。
.
已完成。
为 SQL 缓存依赖项启用该表。
已完成。
当看到"已完成"时,也就已经为SQL 缓存依赖项启用该表Orders。
2):在Web.config文件为 SQL 缓存依赖项配置页
<!--connectionStrings是数据库连接字符串配置,须手动添加-->
Integrated Security=True" providerName="System.Data.SqlClient" />
...
对 ASP.NET 应用程序的缓存中所存储的项与特定 SQL Server 数据库表的关系进行配置后,
SqlCacheDependency 类的一个实例将监视该表,以便在表中的项发生更改时自动更新该项或从缓存中移除该项。
监视将以 PollTime 所指定的频率进行。
代码实现版本:
protected void Page_Load(object sender, EventArgs e)
{
Response.AddCacheItemDependency("Northwind:customers");
// Set additional properties to enable caching.
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetValidUntilExpires(true);
}
3):在aspx页面中使用缓存:
<!--下面的SqlDependency为"数据库名:表名",其中缓存通知必须与用aspnet_regsql.exe时提供的-et -t一致-->
4):工作做到这里,所以的工作已完成. 一旦应用程序启动,就会每隔一段时间就去数据库查询.
PS:
其实对一个表设置依赖性其实就是在该表内添加一个触发器,当执行INSERT, UPDATE, DELETE等操作时执行一个名叫AspNet_SqlCacheUpdateChangeIdStoredProcedure的存储过程,其修改AspNet_SqlCacheTablesForChangeNotification表对于tableName的changeId,使之递增1.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12639172/viewspace-462657/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/12639172/viewspace-462657/