前一段时间有反映说是一个使用了struts的生产系统的页面显示速度太慢登录后发现确实如此于是进行了一番性能调优的研究和测试
一根据struts官方的性能调优说明进行了一些参数的修改
http://strutsapacheorg/x/docs/performancetuninghtml http://cwikiapacheorg/WW/performancetuninghtml
Turn off logging and devMode(关闭logging和Devmode)
这个当然没问题但是全部关闭logging不现实我只是关闭了struts相关package的logging
Do not use interceptors you do not need把strutsxml中不需要的interceptor统统删除
Use the correct HTTP headers (CacheControl & Expires)
不确定应该如何修改
Copy the static content from the Struts jar when using the Ajax theme (Dojo) or the Calendar tag关于这点后面会提到
Create a freemarkerproperties file in your WEBINF/classes directory照做
Create the freemarkerproperties file and add the following setting (or whatever value you deem fitting)template_update_delay=照做
Enable Freemarker template caching As of Struts setting the property strutsfreemarkertemplatesCache to true will enable the Struts internal caching of Freemarker templates This property is set to false by default照做
进行上述修改后发现页面打开的速度并没有明显的提高
二此时我已经基本锁定网页打开速度慢的原因与ajax(或者说是dojo)有关因为dojo的js库大概有K左右先尝试使用gzip压缩javascript减小传输量看能否加快页面的加载速度在Tomcat的serverxml的connector中添加如下配置激活gzip功能compression=on compressionMinSize= noCompressionUserAgents=gozilla traviata compressableMimeType=text/htmltext/xmltext/javascriptapplication/xjavascriptapplication/javascript进行上述修改后发现页面打开的速度还是没有明显的提高
三经过上述两个实验觉得应该是struts所封闭的dojo的性能问题了于是引入JQuery JQuery的js文件最小是K gzip后应该更小页面的响应速度明显改善(一个数量级以上的提高)主要原因在于与服务器交互的处理上极大地提升了效率而且页面处理代码更加简洁明了
最后我删除了所有的<shead theme=ajax/>和 <shead/>(如果页面中加入<shead />那么在Struts生成的html中后包含dojojs)使用JQuery来完成所有的Ajax和javascript功能