云自無心水自閑

          天平山上白云泉,云自無心水自閑。何必奔沖山下去,更添波浪向人間!
          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
          主站蜘蛛池模板: 莱阳市| 九龙城区| 阜城县| 广元市| 南开区| 津南区| 雷波县| 婺源县| 两当县| 滦南县| 荥经县| 山阳县| 阳谷县| 白河县| 桃源县| 化州市| 姚安县| 长寿区| 庆城县| 南涧| 图片| 丹东市| 吉木萨尔县| 改则县| 灵山县| 明光市| 井陉县| 大新县| 柳江县| 尚志市| 高台县| 成武县| 嘉义市| 固安县| 永丰县| 全椒县| 三台县| 凤翔县| 雷山县| 延庆县| 嘉义县|