朋友说有个网站叫我去看看,优化一下。
java做的网站,其实我心里没底,因为我很少用java的东西,所以邀请了另外一位java的朋友一起。
第一阶段:从十几秒到6秒
打开网站之后,发现最慢的页面需要十几秒才能出来,这显然是用户没有办法接受的。所以就从最慢的页面开始吧。
焦点先放在这个最慢的页面,发现该页面左边是一个树形列表,右边是一个简单的单条数据修改界面。
我们先关注的是代码问题,
所以问题的焦点放到这个树形列表。这个树形列表数据量相对比较大,估计5000~10000个节点左右,我看了看使用的是MzTreeView 的树形列表,看了他的说明,几千条数据应该不是问题,(听说CSDN也是用的这个)。
难道从数据库读取节点数据的算法有点问题吗?找到相应的代码,看了应该是没有多大问题的。
既然代码没有问题,我们只好检查服务器的性能和软件配置了
只要登录到服务器,看看服务器配置确实也比较差,不过据我们估计,就算服务器差也要不了十几秒。
我们注意到tomcat在我们访问页面时候,CPU占有比较高。我们猜想,速度慢可能和tomcat有关系?会不会调节一下tomcat的配置能够变快?
搞java的提醒我,JVM虚拟机内存大小可以调一下,我就去打开tomcat的配置界面,最低调整到256M,最高调整到512M,重启tomcat,没想到效果就有了:现在只要6秒左右可以出来了。
第二阶段:从六秒到2秒
我们注意到一个细节,在本地访问比我们从远程快。显然,我们认为这和传输有关。
我们考虑查一下,这个页面到底有多大,没想到直接从浏览器还看不到,显示未知大小。
只好用微软那个webtest的工具,可以看到,这个页面有500K以上,500k的数据传输需要6s也算是正常了。
我们认为解决的办法有几中,一是加大服务器带宽,是不是会快一点,但是一想,第一需要投资,第二人家客户端带宽小,照样会很慢。
第二条路,怎么样减小页面的大小。
减小的办法我们最先考虑树形列表是不是可以分层加载,这样肯定可以,不过这样需要改动比较多的代码。先搁置这个办法。
有没有不动代码,减少带宽需求的?有,web server进行压缩(IIS有压缩,tomcat也应该有),因为主要是树形列表的节点数目比较多,而使得文件比较大,所以压缩率应该是比较大的。
上网一搜,tomcat果然可以配置压缩,而且非常简单。
我立马配置了一下,没想到,效果非常好。(虽然压缩是要占用CPU的)。
该页的访问从6s一下到了2秒左右。
我想2s左右是一个能接受的范围,所以优化工作算是取得阶段性胜利。
收工。