转:我的struts2项目性能调优三步曲

前一段时间有反映说是一个使用了struts2的生产系统的页面显示速度太慢。登录后发现确实如此,于是进行了一番性能调优的研究和测试。

一,根据struts2官方的性能调优说明进行了一些参数的修改。

http://struts.apache.org/2.x/docs/performance-tuning.html

http://cwiki.apache.org/WW/performance-tuning.html

TurnofflogginganddevMode.(关闭logging和Devmode)

这个当然没问题,但是全部关闭logging不现实,我只是关闭了struts2相关package的logging

Donotuseinterceptorsyoudonotneed.

把struts.xml中不需要的interceptor统统删除

UsethecorrectHTTPheaders(Cache-Control&Expires).

不确定应该如何修改

CopythestaticcontentfromtheStruts2jarwhenusingtheAjaxtheme(Dojo)ortheCalendartag.

关于这点,后面会提到

Createafreemarker.propertiesfileinyourWEB-INF/classesdirectory.

照做

Createthefreemarker.propertiesfileandaddthefollowingsetting(orwhatevervalueyoudeemfitting):

template_update_delay=60000

照做

EnableFreemarkertemplatecaching

AsofStruts2.0.10,settingthepropertystruts.freemarker.templatesCachetotruewillenabletheStrutsinternalcachingofFreemarkertemplates.Thispropertyissettofalsebydefault.

照做

进行上述修改后,发现页面打开的速度并没有明显的提高.

二,此时我已经基本锁定网页打开速度慢的原因与ajax(或者说是dojo)有关。因为dojo的js库大概有450K左右,先尝试使用gzip压缩javascript,减小传输量,看能否加快页面的加载速度

在Tomcat的server.xml的connector中添加如下配置,激活gzip功能

compression="on"

compressionMinSize="2048"

noCompressionUserAgents="gozilla,traviata"

compressableMimeType="text/html,text/xml,text/javascript,application/x-javascript,application/javascript"

进行上述修改后,发现页面打开的速度还是没有明显的提高.

三,经过上述两个实验,觉得应该是struts2所封闭的dojo的性能问题了。于是引入JQuery.

JQuery的js文件最小是55K,gzip后应该更小,页面的响应速度明显改善(一个数量级以上的提高),主要原因在于与服务器交互的处理上极大地提升了效率。而且页面处理代码更加简洁明了。

最后,我删除了所有的<s:headtheme="ajax"/>和<s:head/>(如果页面中加入<s:head/>,那么在Struts2生成的html中后包含dojo.js),使用JQuery来完成所有的Ajax和javascript功能。

相关推荐