转:我的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功能。