云自無心水自閑

          天平山上白云泉,云自無心水自閑。何必奔沖山下去,更添波浪向人間!
          posts - 288, comments - 524, trackbacks - 0, articles - 6
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          我的struts2項目性能調優三步曲

          Posted on 2008-07-01 13:33 云自無心水自閑 閱讀(6679) 評論(7)  編輯  收藏 所屬分類: Java心得體會Struts2DojoJQuery
          前一段時間有反映說是一個使用了struts2的生產系統的頁面顯示速度太慢。登錄后發現確實如此,于是進行了一番性能調優的研究和測試。
          一,根據struts2官方的性能調優說明進行了一些參數的修改。
          http://struts.apache.org/2.x/docs/performance-tuning.html
          http://cwiki.apache.org/WW/performance-tuning.html

          Turn off logging and devMode.(關閉logging和Devmode)
          這個當然沒問題,但是全部關閉logging不現實,我只是關閉了struts2相關package的logging

          Do not use interceptors you do not need.
          把struts.xml中不需要的interceptor統統刪除

          Use the correct HTTP headers (Cache-Control & Expires).
          不確定應該如何修改

          Copy the static content from the Struts 2 jar when using the Ajax theme (Dojo) or the Calendar tag.
          關于這點,后面會提到

          Create a freemarker.properties file in your WEB-INF/classes directory.
          照做

          Create the freemarker.properties file and add the following setting (or whatever value you deem fitting):
          template_update_delay=60000
          照做

          Enable Freemarker template caching
          As of Struts 2.0.10, setting the property struts.freemarker.templatesCache to true will enable the Struts internal caching of Freemarker templates. This property is set to false by default.
          照做

          進行上述修改后,發現頁面打開的速度并沒有明顯的提高.

          二,此時我已經基本鎖定網頁打開速度慢的原因與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:head theme="ajax"/>和 <s:head/>(如果頁面中加入<s:head />,那么在Struts2生成的html中后包含dojo.js),使用JQuery來完成所有的Ajax和javascript功能。




          評論

          # re: 我的struts2項目性能調優三步曲  回復  更多評論   

          2008-07-01 14:38 by Greco
          我在使用struts ajax 的時候也發覺慢的問題
          然后用Firebug查看發現加載的js太多,而且有些不是必須的
          所以按照yahoo ui 的15條軍規來看
          這絕對是影響頁面速度的關鍵

          # re: 我的struts2項目性能調優三步曲  回復  更多評論   

          2008-07-01 23:42 by YYX
          struts2 的ajax主題很失敗,我和LZ一樣也是開始用了,后來發現不但影響速度而且效果也不行,轉而用jquery自己完成ajax功能

          # re: 我的struts2項目性能調優三步曲  回復  更多評論   

          2008-07-02 07:33 by 云自無心水自閑
          其實struts2另外一個性能的瓶頸在于ognl,但是我現在還沒有什么好方法來解決

          # re: 我的struts2項目性能調優三步曲  回復  更多評論   

          2008-07-02 07:49 by 云自無心水自閑
          ognl已經升級到2.7,據稱性能有顯著提高,但是與MVEL相比,還是有一個數量級的差別。 :(

          # re: 我的struts2項目性能調優三步曲  回復  更多評論   

          2008-07-02 07:52 by 云自無心水自閑
          這是TSS上的OGNL與MVEL的性能對比的文章

          # re: 我的struts2項目性能調優三步曲  回復  更多評論   

          2008-07-02 07:52 by 云自無心水自閑
          http://www.theserverside.com/news/thread.tss?thread_id=46083

          # re: 我的struts2項目性能調優三步曲  回復  更多評論   

          2009-10-27 14:23 by fengye_nothing
          aaaaaaaaaaaaa
          主站蜘蛛池模板: 色达县| 阳山县| 长海县| 和政县| 乐平市| 桦甸市| 青河县| 青川县| 尤溪县| 敦煌市| 崇阳县| 马关县| 潢川县| 兴宁市| 库尔勒市| 邹城市| 华宁县| 比如县| 嘉荫县| 时尚| 乌鲁木齐县| 庆云县| 大庆市| 涿鹿县| 石嘴山市| 宁强县| 老河口市| 平顺县| 沙坪坝区| 麻城市| 门头沟区| 札达县| 浙江省| 兴和县| 惠州市| 马边| 阜新市| 聂荣县| 喀什市| 喀喇沁旗| 胶州市|