日期:2014-05-18  浏览次数:20483 次

页面缓存的问题
一个页面中采用缓存,搜索的时候,是不是在缓存的这段时间内,数据库记录是不会变的.那如果这样的话,搜索不就没用了吗?
能不能在页面采用缓存的情况下,也使搜索可以起到作用?
请大家指教了.

------解决方案--------------------
把缓存到期时间设置短些
------解决方案--------------------
是在缓存中搜索
但是同样也不明白...
------解决方案--------------------
把缓存到期时间设置短些


2楼的正确`]

楼主意思是说当缓存存在的时候 查寻不了下边的记录
------解决方案--------------------
设置参数,重新提取就是
------解决方案--------------------
不懂!!
------解决方案--------------------
varybyparam设置参数
------解决方案--------------------
要缓存的部分用用户控件写,然后加载到页面上,不要整个页面都缓存。
或者自己写个页面缓存的方法指定那些数据要使用缓存。
“rpBrand.DataSource=(DataTable)ss.pageCreateCache(this.Cache, "brandlist ", "GetBrandList ",30);
rpBrand.DataBind();”
------解决方案--------------------
<%@ outputcache duration= "60 " varybyparam= <参数> sqldependency= "jxc:BillPay " %>
当参数改变了,可以自动重新提取数据
------解决方案--------------------
另外,上述900也仅仅对早期的SQL Server数据库才使用轮询查询。SQL Server2005则是有通知机制,自动及时通知.Net的。

缓存系统的关键是使用依赖项,甚至自己写CacheDependency子类。例如我使用OODBMS,当数据被修改的时候,我可以捕获它的事件,从而我就可以在自己写的CacheDependency里边让相应的任何缓存失效。SqlCacheDependency只是当表中记录改变时让缓存失效,而我自定义的CacheDenpendency让单个对象的改变来控制缓存失效。

如果你学习缓存系统,应该学习各种CacheDenpendency。如果以为缓存依赖就是设置一个很小的 Duration值,想的太简单了太不实用了,其实还不懂得使用缓存。
------解决方案--------------------
显然查询应该在查询条件改变的时候使缓存失效。有许多许多方法,VaryByParam、VaryByControl、设置查询条件为Cache的Key等等,都可以使用。你先全面了解一下CacheDependency,然后再用。
------解决方案--------------------
搜索去数据库搜索,
取回完之后,更新缓存