树控件优化

今天在使用系统的时候,意外发现页面加载树形空间异常缓慢,慢到了10秒以上。之前将数据库中数据转换成树形结构是我写的,虽然没有对数据做缓存,依然是每次从oracle中读取并组装成树,但是不至于慢到10秒以上。

经审查发现,返回的数据信息合计三千条,数据大小尽然达到4.4MB,整个数据下载花费8秒。而等待只花了1.75秒。

整个分析说明服务器只花了1.75秒就把数据组装完成并返回到客户端,只是返回的数据量达到了4.4MB。
仔细查看返回的数据,发现同事写的返回结果中包含了太多前端不需要的字段,足足包含了60多个字段。而easyui前端其实只需要4个字段就够了。

很明显了,优化方案可以如下:
1、只返回前端需要的字段,将60个字段变成4个字段,大大缩小返回数据量;
2、由于这类数形数据基本不会变更,可以变为缓存存起来,避免每次从数据库中读取并组装。
3、使用异步数加载,每次点击只加载一个层级的数据,避免一次性加载过多数据,提高页面响应速度。

SSL服务器的url重写,导致系统登录后跳转到http协议

首先描述下我们的部署架构: 在F5-#1上配置虚拟服务器VS-#1以及负载均衡池(包含10.1.1.1、10.1.1.2),并将VS-#1 443端口的https请求解密为http请求后转发至池内服务器80端口。

用户通过浏览器访问系统的时候,是使用https访问到ssl服务器,然后ssl服务器使用url重写,将请求报文修改为http协议,并负载均衡转发到后台服务器。这样就造成一个问题:后台tomcat容易并不知道自己需要使用https,只知道自己是使用的是http。也是就说:httpservletrequest.getSchema()得到的是http,而不是https,所以这样就导致spring security的重定向到系统首页的url地址是http协议,而不是https协议。

解决方案:

让tomcat知道自己位于proxy(h5负载均衡)后面。在tomcat的sever.xml里面的connector里面生命proxy的相关信息,包括proxyName,proxyPort,schema,secure等等。参考网址:http://www.thecodingforums.com/threads/load-balancing-an-https-java-web-application-in-tomcat.145712/

proxyName=”https://www.test.com” proxyPort=”443″ scheme=”https” secure=”true”