一般情况下,插入,更新,删除时,因依赖关系,缓存会被自动释放掉,能不能实现数据库某条记录变动后,缓存中修改相应记录?
解决方案 »
- 如何点击按钮弹出选择文件对话框
- .net上传大文件服务器设置问题……难题啊,纠结了我几个月
- updateprogress中放一个button怎么在后台Cs文件中响应点击事件?
- gridview搜索
- 小生畅谈:url重写!!!咋个整
- 请高手指点javascript中如何把一个服务器控件隐藏
- 请问一下(asp.net与dreamwarver能否联用)
- 请问怎样在页面上保存一个动态生成的控件
- 使用javascript制造的对话框可以有MessageBox那么丰富吗?
- 小白求助,第一次发布网页
- 请教和讨论关于数据加密解密的问题!!!
- 查询时提示ExecuteReader: CommandText 属性尚未初始化
1.将A表记录全部读取出来放入缓存
2.按页面搜索条件的不同,启用DefaultView的RowFilter筛选条件
这种方式,在记录集不多的情况下还可以,但数据量大了以后,启用DefaultView的速度就很慢很慢.
是否有更好的办法实现筛选?
由于页面中搜索条件有好几个,所以只能先将全部数据读出放入内存中,然后靠筛选了,不知有没有更好的办法?
这里就再取一次缓存起来好了
1.将A表记录全部读取出来放入缓存
2.按页面搜索条件的不同,启用DefaultView的RowFilter筛选条件
这种方式,在记录集不多的情况下还可以,但数据量大了以后,启用DefaultView的速度就很慢很慢.
是否有更好的办法实现筛选?
由于页面中搜索条件有好几个,所以只能先将全部数据读出放入内存中,然后靠筛选了,不知有没有更好的办法?ajax实现那么方便现在,干嘛不做成向导式的,逐步求精
infoCacheManager.Add(CacheKey, objObject, 缓存优先级, new InfoCacheItemRefreshAction(),失效时间刻度);里边的InfoCacheItemRefreshAction是刷新缓存
public class InfoCacheItemRefreshAction : ICacheItemRefreshAction
{
public void Refresh(string key, object expiredValue, CacheItemRemovedReason removalReason)
{
处理
}
}
不过现在的基本都是SQL Server确发生成XML,前台直接读XML数据了
infoCacheManager.Add(CacheKey, objObject, 缓存优先级, new InfoCacheItemRefreshAction(),失效时间刻度);里边的InfoCacheItemRefreshAction是刷新缓存
public class InfoCacheItemRefreshAction : ICacheItemRefreshAction
{
public void Refresh(string key, object expiredValue, CacheItemRemovedReason removalReason)
{
处理
}
}
-------------------------------------------------------------------
处理的内容是什么呢,InfoCacheItemRefreshAction 具体怎么使用?
——————————————————————————————————————————
显然应该第一次(释放掉内容后第一次)读取时才读取(修改),这才叫做缓存吗。否则,就直接成了触发器了。即使是触发器,关于读取数据重新保存的代码也可能需要你来写,我看不出asp.net项目组有什么高招能够聪明地在不知你的程序设计细节的情况下代替你读取数据。对于一些可以办到的地方,asp.net已经逐渐办到了。例如SqlDataSource一旦启用缓存,就会在自动读取数据库来刷新当前页面内的记录行,因为它知道你的SelectCommand属性了嘛。对于ObjectDataSource,以及其它一些类型的控件,asp.net也是这样自动更新缓存数据的。因为这些控件水平相对不高(假设你的要求很高),这些控件都严格限制了操作细节。如果你已经熟练地用了这些控件,还不够,你还可以自己仿照它们的控制逻辑设计自己的控件。多用高级的控件,少往低级的编程方面设计(但是你要精通它们以便自己创造高级的东西),能用来点石成金的东西就会越来越多。
1.将A表记录全部读取出来放入缓存
2.按页面搜索条件的不同,启用DefaultView的RowFilter筛选条件
这种方式,在记录集不多的情况下还可以,但数据量大了以后,启用DefaultView的速度就很慢很慢.
是否有更好的办法实现筛选?
由于页面中搜索条件有好几个,所以只能先将全部数据读出放入内存中,然后靠筛选了,不知有没有更好的办法?
————————————————————————————————————————
应该把 RowFilter 作为被缓存数据的关键key中的主要组成部分,在Cache中仅保存筛选出的部分数据(例如只有20条记录),不能保存“整个表”这么庞大。如果你以为把整个表读到内存就节省内存了,以为根据筛选条件为数据块缓存就有很多“重复”数据于是就浪费内存了?90%以上的情况下这是错误的、没有仔细推算的理由。