web系统数据缓存问题

nu 2005-11-23 10:19:50
系统需要在页面上显示树状的组织架构,数据是从数据库中获取的,有好几种展现形式,且根据登录人不同,显示的内容也不一样,这些都已经实现了,但是每次要显示这几颗树的时候,都要从数据库里面去获取一遍,返回到页面后,页面还要递归显示,性能很差。
现在的改进方案是把后台返回的数据放在session中,这样显示过一遍后,以后就直接从session中取,速度快多了,这样做的缺点是第一次访问仍然会慢,另外,如果访问量很大,就要在session中放入大量内容,担心会将服务器拖垮。由于这些树是系统的核心元素,大部分操作都是围绕着它们展开的,现在设想能不能在系统启动的时候就把这些数据全部读出,缓存起来,以后就直接从缓存中读取,这样的思路对不对呢,如果可行,该怎么实现,请指教。
...全文
156 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
nu 2005-11-24
谢谢大家,我是这样解决的:作了一个listener,在contextInitialized方法中将所有数据取出来,放入ServletContext,以后都直接从context中取,需要更新的时候更新context中的相应内容,最后在contextDestroyed方法中将所有数据销毁。
回复
jayli426 2005-11-23
这个问题也是关注的,谢谢在这里能看到这么多有用的讯息
回复
nu 2005-11-23
谢谢各位的答复。因为系统整体原因,不想对现有实现作大的改动,还是准备对现有数据作缓存,也就是所谓的内存树型结构吧,所有数据按用户分类后所有类型差不多有100种。
如果用HTML缓存,怎么做呢?
回复
nanxiaoke 2005-11-23
1种,加载成内存树型结构,省却数据库连接和传输时间;
2种,应用AJAX,每次请求只返回一层节点;
3种,根据不同用户确定出所有分类,将不同输出后的表现HTML缓存,不要存储在session中
回复
liu_you 2005-11-23
1种,加载成内存树型结构,省却数据库连接和传输时间;
2种,应用AJAX,每次请求只返回一层节点;
3种,根据不同用户确定出所有分类,将不同输出后的表现HTML缓存,不要存储在session中.
回复
lzl123 2005-11-23
如果这些树的数据不是用户相关的,可以考虑邦定到servletcontext
回复
凋零的老树 2005-11-23
最好把数形结构写在子页面里,点数形结构时变化的页面也是在子页面,大框架是不动的;
就类似于csdn;
http://community.csdn.net/
回复
zeq258 2005-11-23
首先,对于你把数据放到session的这种做法,
严重不支持!

使用缓存的前提是:
1,该数据更新频率比较低,相对稳定。
2,该数据被访问的频率高。。。
。。。。
这些并不是硬指标,只是在这些情况下,使用缓存,才可以达到提高效率的目的。

建议使用hibernate,它的一个很大的优点就是缓存的管理。

回复
liu_you 2005-11-23
不管是有多少种都好,只要是定量的,能根据用户得到分类即可.
存储static或者在application上存储缓存.
请求数据时先在缓存中找对应分类的数据,没找到,就做请求,并将请求完成的HTML流缓存起来便于下次使用,找到了就直接返回.
看起来你还不需要刷新,要是需要刷新的话,你可以适当增加接口.
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2005-11-23 10:19
社区公告
暂无公告