web 项目性能优化方案 收藏
性能优化有两个用途:提高页面的相应速度和减少服务器的开销
以下是最近几天在网上搜索的资料,并结合我们自己的项目做了测试,感觉我们的Web 工程在性能上还有很大的提升空间!一下介绍几点优化的方案,仅供参考!
1、 jsp 预编译
jsp 页面的预编译有三种:
a 手动方法,部署完毕后全局访问一遍所有页面
b 通过shell 脚本把生成的.class 文件直接发送到现场
c 通过weblogic.xml 配置的预编译在现场部署时完成预编译
以下结合我们项目介绍一下各自优缺点
A 是我们现在所用的方法,部署完毕后现场工程师访问一个我们提供的页面,通过Ajax 系统遍历全部页面。缺点:不适用于集群部署!
B 配合5中的类加载也是大型项目最常用的方式,代码安全性好和访问速度快是最大的优点!但是他的缺点也很明显:页面更新不灵活。
C 这个办法实现简单,可以提高第一次访问页面的速度,但是缺点比较严重:大大增加了Weblogic 部署应用时的负担,而且不会预编译WEB-INF 下的文件(Oracle 给的官方说法也是绕过WEB-INF 的)
可行方案(张翔赞助):在B 方案的基础上还是使用默认的加载jsp 文件机制,这样发包前我们自己替现场的Weblogic 完成了预编译的过程,降低了Weblogic 部署的负担,而且能灵活修改jsp 文件
2、 控制JavaScript
Javascript 是不标准HTML 内容的最大来源,虽然实现了很多非常炫的效果但是却放缓了页面加载的时间。而且经常使用
window.document.getElementById("")也会影响速度。
可行方案:
A 把页面验证拿到内部结合我们的common 页面来使用,这样验证处理更灵活,更美观,页面加载也更快。
B 做一个缓存来处理大量使用到document 的页面,如:
Var rootDoc = window.document;
rootDoc. getElementById("").value=…..
rootDoc. getElementById("").value=…..
C 能用innerText 的尽量使用innerText ,减少innerHTML 的使用
3、 控制jsp 时间戳校验频率
Webloic 提供了控制jsp 更新频率的配置项
pageCheckSeconds
60
这个方法规定了Weblogic 多长时间去检查一下jsp 文件的更新,首先去检查jsp 文件的时间戳,即便是jsp 没有更新也会有性能上的消耗,而且这个值默认是1S , 几乎是动态更新的!
可行方案:
研发阶段保持默认的配置,便于对页面的调试;发包到现场时把这个值改为3600S, 降低Weblogic 的性能消耗。
4、 控制Servlet 时间戳校验频率
Weblogic 中的配置项负责控制Servlet (这里主要指我们的action 层)的更新频率。该配置的默认值也是1!恐怖!
可行方案:
研发阶段不建议用默认值,测试后感觉相应有点慢,自己根据喜好去配置吧。 发包时建议调成-1,表示从来不去关心action 层代码的更新,也是为了减少Weblogic 的压力
5、 Web.xml 加载机制
只适用于项目后期或成型期,需求不会频繁变动,那么在web.xml 里面加入这个配置项吧:
JSPClassServlet
weblogic.servlet.JSPClassServlet
JSPClassServlet
*.jsp
Weblogic 再也不会去关心你的jsp 文件,当你访问页面时他直接调用.class 文件
可行方案:
建议项目后期成型以后再使用此方案
6、 控制垃圾代码
由于System.out.println()是一种同步调用,即在调用它时,磁盘I/O操作必须等待它的完成,因此我们要尽量避免对它的调用
使用log4j 可以代替它的工作,但是毕竟log 日至对性能和硬盘也是一种消耗。 可行方案:
彻底消灭System.out.println(),精化log 日至,提高log 日至的含金量 7、 减少连接次数
数据库的连接,webservices 的连接也是很耗性能的,所以尽量减少连接次数,一次能搞定的事情就不要留给下次
可行方案:
web 项目性能优化方案 收藏
性能优化有两个用途:提高页面的相应速度和减少服务器的开销
以下是最近几天在网上搜索的资料,并结合我们自己的项目做了测试,感觉我们的Web 工程在性能上还有很大的提升空间!一下介绍几点优化的方案,仅供参考!
1、 jsp 预编译
jsp 页面的预编译有三种:
a 手动方法,部署完毕后全局访问一遍所有页面
b 通过shell 脚本把生成的.class 文件直接发送到现场
c 通过weblogic.xml 配置的预编译在现场部署时完成预编译
以下结合我们项目介绍一下各自优缺点
A 是我们现在所用的方法,部署完毕后现场工程师访问一个我们提供的页面,通过Ajax 系统遍历全部页面。缺点:不适用于集群部署!
B 配合5中的类加载也是大型项目最常用的方式,代码安全性好和访问速度快是最大的优点!但是他的缺点也很明显:页面更新不灵活。
C 这个办法实现简单,可以提高第一次访问页面的速度,但是缺点比较严重:大大增加了Weblogic 部署应用时的负担,而且不会预编译WEB-INF 下的文件(Oracle 给的官方说法也是绕过WEB-INF 的)
可行方案(张翔赞助):在B 方案的基础上还是使用默认的加载jsp 文件机制,这样发包前我们自己替现场的Weblogic 完成了预编译的过程,降低了Weblogic 部署的负担,而且能灵活修改jsp 文件
2、 控制JavaScript
Javascript 是不标准HTML 内容的最大来源,虽然实现了很多非常炫的效果但是却放缓了页面加载的时间。而且经常使用
window.document.getElementById("")也会影响速度。
可行方案:
A 把页面验证拿到内部结合我们的common 页面来使用,这样验证处理更灵活,更美观,页面加载也更快。
B 做一个缓存来处理大量使用到document 的页面,如:
Var rootDoc = window.document;
rootDoc. getElementById("").value=…..
rootDoc. getElementById("").value=…..
C 能用innerText 的尽量使用innerText ,减少innerHTML 的使用
3、 控制jsp 时间戳校验频率
Webloic 提供了控制jsp 更新频率的配置项
pageCheckSeconds
60
这个方法规定了Weblogic 多长时间去检查一下jsp 文件的更新,首先去检查jsp 文件的时间戳,即便是jsp 没有更新也会有性能上的消耗,而且这个值默认是1S , 几乎是动态更新的!
可行方案:
研发阶段保持默认的配置,便于对页面的调试;发包到现场时把这个值改为3600S, 降低Weblogic 的性能消耗。
4、 控制Servlet 时间戳校验频率
Weblogic 中的配置项负责控制Servlet (这里主要指我们的action 层)的更新频率。该配置的默认值也是1!恐怖!
可行方案:
研发阶段不建议用默认值,测试后感觉相应有点慢,自己根据喜好去配置吧。 发包时建议调成-1,表示从来不去关心action 层代码的更新,也是为了减少Weblogic 的压力
5、 Web.xml 加载机制
只适用于项目后期或成型期,需求不会频繁变动,那么在web.xml 里面加入这个配置项吧:
JSPClassServlet
weblogic.servlet.JSPClassServlet
JSPClassServlet
*.jsp
Weblogic 再也不会去关心你的jsp 文件,当你访问页面时他直接调用.class 文件
可行方案:
建议项目后期成型以后再使用此方案
6、 控制垃圾代码
由于System.out.println()是一种同步调用,即在调用它时,磁盘I/O操作必须等待它的完成,因此我们要尽量避免对它的调用
使用log4j 可以代替它的工作,但是毕竟log 日至对性能和硬盘也是一种消耗。 可行方案:
彻底消灭System.out.println(),精化log 日至,提高log 日至的含金量 7、 减少连接次数
数据库的连接,webservices 的连接也是很耗性能的,所以尽量减少连接次数,一次能搞定的事情就不要留给下次
可行方案: