最近在看sqlcachedependency 缓存方面的内容。有些问题不太明白。想请教下前辈。
web.config 里面的配置 是用来干什么的。他跟 我前台编写程序又什么关系。web.config里面的这个配置
<add connectionStringName="NorthwindConnectionString" name="CMS_Content" /> 他里面的 name 只 用来干什么 的 可以水边写吗。或者他一定要是 对应数据库里面的某个表明。
当我用下面代码执行的时候。
public DataView getFromCache(string Key)
{
if (HttpRuntime.Cache[Key] == null)
{
//取数据
DataView dv = BLL.Contents.GetContentTable(1, 10).DefaultView;
//启用更改通知
SqlCacheDependencyAdmin.EnableNotifications(ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString);
//连接到 SQL Server 数据库并为 SqlCacheDependency 更改通知准备数据库表
SqlCacheDependencyAdmin.EnableTableForNotifications(ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString, "CMS_Content");
//制定缓存策略
SqlCacheDependency scd = new SqlCacheDependency("CMS_Content", "CMS_Content");
//插入缓存
HttpRuntime.Cache.Insert(Key, dv, scd);
source = "Database";
return dv;
}
else
{
//从缓存中取值
source = "cache";
return (DataView)HttpRuntime.Cache[Key];
}
}
可以正常完成。 我的key 就是web.config 里面的CMS_Content 这个。 但是 如果我把key改成 其他的值。好像也一样可以。也没有不正常的现象。 这就让我感觉有点奇怪了。。不知道为什么。这里数据库除了 当数据发送改变时 就清空之前的缓存外。还有其他作用吗。不太理解里面的关系。希望得到指点。谢谢。
Cache.Insert(Key, dv, scd);
这个key是保持 Cache集合对象唯一的标志,并不代表表名。
web.config 中的 name 相当于 <connectionStrings>集合中的一个key 也是代表唯一的标志,也不代表表名