sunny0311

导航

读 PetShop代码(数据缓存篇)

PetShop中使用了拉SQL缓存依赖,使用拉SQL缓存依赖的项目只有在数据修改时才会立即失效。

使用拉SQL缓存依赖之前,必须执行下面两步配置:

1 对一个或多个数据库表启用SQL缓存依赖。

使用Microsoft.Net框架SDK程序组的SDK命令行提示程序执行aspnet_regsql命令行工具,例如

启用Pubs数据库的SQL数据库依赖,执行命令如下:

aspnet_regsql -C "Data Source=localhost;Integrated Security=True;Initial Catalog=Pubs" -ed

该命令创建AspNet_SqlCacheTablesForChangeNotification数据表。

启用一个数据库之后,就可以启用特定表的SQL缓存依赖:

aspnet_regsql -C "Data Source=localhost;Integrated Security=True;Initial Catalog=Pubs" -et -t Titles

该命令启用了Titles表的数据库依赖,将添加一行新数据在AspNet_SqlCacheTablesForChangeNotification数据表中。

按上面所述,可以添加PetShop相关表的SQL缓存依赖。

2 配置文件中配置SQL缓存依赖。

PetShop中相应部分配置如下:

Code

 

每隔10000毫秒检查数据库中的表的数据是否更新

对页面输出缓存使用拉SQL缓存依赖

举例:在其空间NavigationControl.ascx中,写代码如下:

<%@ OutputCache Duration="10000"  VaryByParam="*"%>

this.CachePolicy.Dependency = new DependencyAccess().CreateCategoryDependency();//设定此控件的依赖项

依赖项的建立(CreateCategoryDependency()的大概实现):

利用类SqlCacheDependency,类AggregateCacheDependency进行实现,类SqlCacheDependency用来建立依赖项,类AggregateCacheDependency负责监视依赖项对象的集合。例如对库MSPetShop中的表Product,表Category建立依赖项。代码如下:

Code

return cacheDependency;

拉SQL缓存依赖建立成功。

posted on 2008-09-24 20:23  航子  阅读(456)  评论(0)    收藏  举报