客户变态要求,求一棵能加载3W个节点的高性能树,万能的CSDN啊
如题,用detree还有ajax树(一个节点下挂3万个)直接出不来啊树,有好人能推荐下什么高性能树的嘛,没测过的告诉我觉得什么树性能还可以的,我可以测测看。万能的CSDN啊
------解决方案--------------------3W个啊?就是一行一个,那也得3万行啊。
------解决方案--------------------3w个节点,是部分几次的,是吗?
如果有分几次,可以动态加载啊,点击展开的时候在加载下一层节点
------解决方案--------------------麻烦楼主先确认一个问题,3万个节点,是有层级结构的么?层级下最大可能节点数是多少?层级大概多深?
------解决方案--------------------3W多节点不要一次加载,每当点开一个 节点就加载一些数据。
------解决方案--------------------,树有多深?就是有几级?
我那时搞个几千的,在ie里都够呛,
------解决方案--------------------客户需求也要靠引导的,跟客户权衡利弊,换一种方式显示
------解决方案--------------------分页,开新页时laod数据,开过的页写入缓存,不能每次都读取。
------解决方案--------------------ajax动态加载试试
------解决方案--------------------客户够变态的 楼主够呛
------解决方案--------------------异步加载吧。。。。
------解决方案--------------------一次加载这么多。。。浏览器会死的,异步吧
------解决方案--------------------
本身你用jquery,就已经会影响到效能了。
主要还在于树的层级,以及层级下的树枝的多少。当然是点击父书,才去查询,但是,在相关权限内,你还是要将所有父类树全部查询出来。也够麻烦的。先不管你sql如何写,使用了jquery已经都够麻烦的。
我觉得,你如果针对用户分层级了的话,那可以考虑将左边树按照用户进行层级划分,同一权限的用户加载的左边树应该是一样的。这样一来,就需要将左边树相关资料设成单例的,保证同一层级用户只要第一个人登录了系统,就将从数据库中查询出来,存入单例这个map中。每次登录都判断,同以层级的用户,则先去自己层级的单例map中找,有数据则直接带出,无,则再查询数据库加载,再存入单例map。
就是说,尽量避免所有用户每次登录都查询数据库。毕竟3w不是个小数目,因为jquey的异步使用,本身就会对效能有影响。
------解决方案-------------------- 你看这样行不行、打开节点的时候把数据完全读取出来毕竟3W个估计也不会超过300KB 放入session中别保存到磁盘中。3W条数据一个页面肯定显示不完、先初始显示2000条 预计30KB左右的数据应该可以承受了、然后使用滚动条触发事件进行ajax动态加载!
------解决方案--------------------如果你要一次性的全部加载,那浏览器会卡死的,所以还是用异步加载比较可行。
------解决方案--------------------提供思路,可以避免加载太多数据:
可以只详细显示当前路径,如root/a1/b1/c1/d1 .... 这样与a1平级的枝干就不用显示了。减小也加载量。
然后在点击a1或b1时,展开与其同级别的目录树。下一级目录树不显示。
说白了就和WIN7的资源管理器地址栏差不多。
------解决方案--------------------这么多节点点的过来吗?
用ajax一级一级加载吧
------解决方案--------------------
------解决方案--------------------你理他干嘛,这个节点显示了,另外一个分支就自动关掉。
如果要全部展开,静态代码写死:睡眠10秒钟,然后alert("对不起,您的机器配置太低,请升级")