java如何将页面每次请求获得的数据缓存起来供使用?
情景是这样的:前台页面通过ajax根据后台action返回的flag标示作为判断条件,如何为真,将继续请求action中的某个方法,直到flag为假为止。每次请求后台都会查询一张数据库表获取list数据,如何将每次请求该方法获取的list数据缓存起来?因为最后要将每次得到的list数据都展示在前台页面。
该如何缓存呢?我现在用过一些方法,但是下一次请求的时候,将上一次请求得到的list数据清空了,只能保存当前请求得到的list,做不到将每次请求的list都缓存起来的效果,该如何解决?
请高人指点!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
其实目的就是要把每次请求获取的list数据叠加放在一起,例如:用户查询2012-10-08~2012-10-10期间的数据,那么应该查询形如user_20121008、user_20121009、user_20121010三张表,但是每次请求后台只查询一张表的数据,需要将每次查询获取的数据表数据叠加起来,显示在前台。现在困难的就是前一次请求获取的数据没了,这样到请求完毕的时候只把最后一次请求的数据显示在页面了,这样就有问题。必须把这个时间段内的所有数据显示在页面。
如果不查询数据库,怎么能得到list数据呢?必须要先查询数据库,每次请求查询一张表的数据,表名都是带时间戳的,形如user_20121009这样的表名,每天一张表。查询某个时间段内的所有数据表数据,每次请求值查询一张表的数据。所以要查数据库才能得到list数据。
这个简单啊,你这个核心的地方,就是action这儿不去查数据库,而拿到缓存的数据再直接返回到前台嘛。核心代码逻辑就是:
long obsoleteTime=1天;
List list=cache.get("abc",obsoleteTime);
if(list==null){
list=manager.search(..);
cache.set("abc",list);
}
return list;
这样的缓存策略很多的啊。比如oscache就可以达到要求,而且用起来很简单,只要一个jar,自己抽象一个cache的接口,套上去,就能用了。