突然发现.没有数据库相应的权限.无法做到将缓存项依赖于数据库表.
我现在有个用户控件..用来显示 最新加入的 10 个用户的清单.我希望缓存这个用户控件.直到有新用户加入后.使该用户控件缓存失效.然后重新从数据库读取数据到该缓存中.现在数据库表依赖不能使用.
我的代码应该怎么写呢?等待回复.谢谢~
我现在有个用户控件..用来显示 最新加入的 10 个用户的清单.我希望缓存这个用户控件.直到有新用户加入后.使该用户控件缓存失效.然后重新从数据库读取数据到该缓存中.现在数据库表依赖不能使用.
我的代码应该怎么写呢?等待回复.谢谢~
如果public 查询权限都没有你一开始的缓存是怎么写的?
-----------------------如果要做到实时的话,你就要不断的查询数据库进行对比,这么做并不合适所以有两个办法可以不是很精确的做你想做的1,cache过期
2,定期查询
-----------还有个比较简单的办法,对 注册按钮 进行ajax 到后台进时对cache的重新赋值当点击这个 注册按钮 不仅注册新会员,也同时重新查询库赋给cache
{
switch (custom)
{
case "Cache:最后一次保存用户对象的Ticks":
object x = context.Cache["最后一次保存用户对象的Ticks"];
if (x == null)
return string.Empty;
else
return ((long)x).ToString();
default:
return base.GetVaryByCustomString(context, custom);
}
}然后检查你的“用户”所对应的BLL方法,如果你将保存用户的BLL方法最后都是调用同一个BLL方法就更好,要在其中插入代码HttpContext.Current.Cache["最后一次保存用户对象的Ticks"] = DateTime.Now.Ticks;通过这个简单的Cache单元这就使得自己的程序形成一个机制可以通知用户控件刷新。对于数据库的解决方案,类似地,我们可以简单地创建一个表用来记录每一个表最后一次数据被更改的一个散列的(不容易重复的)标志,然后在GetVaryByCustomString方法中去读取这个表。通过额外地多读取一次这个(数据记录通常很少的)表,可以避免创建用户控件以及执行用户控件中的程序,这个代价还是值得的。在我们不能修改数据库进程来增加一些很酷的进程间事件通知机制时,我们这样做的性能也是可以满意的。
去实现SqlCacheDependency