javaWeb程序优化

来源:互联网 发布:办公用品软件 编辑:程序博客网 时间:2024/06/05 19:59

JavaWeb程序优化

一,后台java代码优化

1.   将String改为StringBuffer;

2.   建立数据库连接池。

3.重定向和转发的优劣:要跳转程序位于自己服务器程序的页面,则转发效率高;位于其他服务器上,则重定向效率高。

4. 删除多余的空行,而//是不规范的注释,尽量将注释换成/**/,可以用在程序的同一行,不要单独占用一行,代码的覆盖率测试要求尽量少的空行和//注释,虽然代码覆盖率测试方法已经过时了。

5. Session对象不需要时不要创建,必要时再创建,不然很消耗资源。

6.    开发完毕,将java程序中的select语句关键字改为大写.

7. jsp页面引入时,尽量使用静态引入,因为静态引入的效率要远远高于动态引入的效率。静态引入时编译时引入,jsp编译成一个servlet,动态引入时运行时映入,jsp将编译成多个servlet

8. 数据库连接优化,注意,这个不是建立DB连接池,而是优化连接DB的java代码,优化方式:通常我们将连接DB的信息放在properties配置文件里,读取properties的java代码可以做优化,不好的方式:通过I/O的方式,new一个Properties来load配置文件里的DB连接信息。优化为好的方式:用静态块statice{}的方式,用ResourceBundle类的getBuddle()静态方法来获取配置文件的DB连接信息,传给全局的ResourceBundle对象,然后再定义一个get方法获取properties的不同值,这种方法只在类加载时实例化一次static{}静态块。代码如下图:



二,前端速率优化

1. JS优化: 参见csdn我转载的另一篇博客。

2. JS文件压缩:很多js插件都提供两种版本,一种用于开发一种用于产品,有很多js压缩工具可供选择,也有很多在线的。

2. html静态化优化:  页面静态化技术 + 页面缓存技术 (参见:另一篇博客 + 极客学院html5页面缓存课程).



三,DB优化: 

1. SQL语句优化:<1>.Select* from emp;  *是通配符,性能较低,程序中尽量不要出现*,最好能具体到列名。

<2>.检索结果少and 检索结果多, 检索结果多 and 检索结果少。因为sql语句是顺序执行。

<3>.select* from emp where eno=100 or eno=200 or eno=300; 此语句和select * from emp where eno in (100,200,300); 等价,但是用in的语法清晰+效率高,因为in函数内部做了优化。

<4>. 用like关键字和通配符来检索数据万不得已再用,它的操作慢的不得了。

<5>.SQL不区分大小写,但是script执行的时候会统一转化为大写。 所以:大写执行效率高但不利于阅读,小写脚本执行效率高但不利于阅读,所以一般关键字大写,另外需要注意:建议程序里关键字也大写,有利于增加效率

2. 范式优化:尽量达到高范式,当然范式越优化,数据量大时冗余越少,查询速度也就越快,价钱也越高。不过这个对数据量大小效果明显,速度不明显,只有数据量非常大时才对速度明显。一般完成3NF即可,完成BCNF时需要增加投入了。




四,框架优化

1.  Strust2标签可以优化,产品上线时,将struts2.xml配置文件中的一些contant标签设置成一下,比如:

   <constant name="struts.devMode" value="true"/>  <!--  开发模式,可以打印很多log,上线时设为false  -->

   <constant name="struts.convention.classes.reload" value="true"/> <!--  热加载类,类改动时能监听到,开发时以免重启server,上线时设为false  -->




五,server优化

1.  平时开发情况下,tomcat中修改了业务逻辑或页面,不用重启server也能自动加载,只有当web.xml修改时要重启,这是因为:tomcat的web.xml文件中,设置了<Context path=“XXX” docBase=“XXX” reloadable=“true” />,即虚拟路径设置时直接加上了另一条属性reloadable=“true”,这方便我们开发,但是对服务器性能有影响。因为reloadable让server一直处于监视状态,所以当我们项目开发完毕,部署服务器时应该将reloadable设置为false;

2.  采用java高并发缓存框架:   参见我的另一篇博客《高并发优化——java缓存框架》: http://blog.csdn.net/alvinnoending/article/details/42240289




六,搜索排名优化:  SEO优化参见我的另一篇博客。




七,总体优化

1. Yahoo军规:参见我的另一篇博客《Yahoo军规》网站优化方案;

2. DNS prefetch:DNS与解析技术,参见我的另一篇博客。



八,其他优化代码保护,防止.class反编译处理。参见我的另一篇博客。


备注:欢迎大家多多评论、批评指正,无论和我一样的菜鸟还是大神~~


0 0
原创粉丝点击