久別大家一年了,其實這一年我從簡單實現了一個Yui-Ext0.33項目后,基本沒有在Ajax表現層花太多的時間,而是轉向研究Jbpm和WebService在項目中的應用,而且大半年前Ext推出1.0版本,感覺在項目中升級使用還不夠成熟,所以在項目中繼續應用小巧的0.33版,基本滿足需要。
由于現在項目越來越大,而且Ext2已經推出,界面實在充滿誘惑,相信商業化的Ext2將更適合項目開發,所以現在對Ext2一些關鍵問題進行研究,首當其沖要解決的就是ext-all.js(512K)太大的問題。
針對js包太大的問題,有兩個現在比較流行的解決方案:
1. 使用jsbuild等工具把需要調用的js重新包裝,此方法的缺點是Ext用的最多的是form和grid等控件,刪減后包容量減少不明顯,而且我是打包了幾次失敗,就沒耐心了,當然,要做到最好調優,這個方案是要考慮的,基本方法就是頁面調用核心的ext-core.js,然后再把頁面要用的包自己包裝。
2. 使用gzip在服務器端犧牲一點cpu資源進行壓縮,有效減低傳輸流量,由瀏覽器解壓處理后執行。這個解決方案另我眼前一亮,其實也不是什么新東西,2005年的老東西了,只是當時沒有想到js會如此龐大,但現在老技術還是很實用的。下面將重點研究這個解決方案。
第一步,在web.xml增加一個gzipfilter,不用自己寫,有現成的,到地址:
http://sourceforge.net/projects/filterlib下載,新建一個測試項目,最簡單就在index.jsp直接調用ext-all.js,把tk-filters.jar拷貝到項目的lib目錄,然后在web.xml加入:
- <filter>
- <filter-name>CompressingFilter</filter-name>
- <filter-class>
- com.tacitknowledge.filters.gzipfilter.GZIPFilter
- </filter-class>
- </filter>
- <!-- 這里按自己許多針對不同文件進行filter-mapping配置,比如*.css -->
- <filter-mapping>
- <filter-name>CompressingFilter</filter-name>
- <url-pattern>*.js</url-pattern>
- </filter-mapping>
<filter>
<filter-name>CompressingFilter</filter-name>
<filter-class>
com.tacitknowledge.filters.gzipfilter.GZIPFilter
</filter-class>
</filter>
<!-- 這里按自己許多針對不同文件進行filter-mapping配置,比如*.css -->
<filter-mapping>
<filter-name>CompressingFilter</filter-name>
<url-pattern>*.js</url-pattern>
</filter-mapping>
第二步,調試,調試js現在發現最好的工具應該是FireFox+firebug(插件),FireFox我用1.5版本,調試足夠了,我使用Weblogic作調試服務器,tomcat也可以,但我的tomcat在server.xml直接配置gzip壓縮功能,所以用weblogic免得測試不出來。啟動項目后,用Firefox打開index.jsp頁面,頁面調出后可能會有腳本錯誤,但可以不管,關鍵看文件的大小,打開工具->firebug->open firebug,尋找net項,即可看到調用的ext-all.js的壓縮效果,如附圖的比較,效果不錯吧,512K => 137K,如果發現js壓縮沒效果,注意打開工具->清除私隱數據,清掉可能存在的cache,再刷新頁面重試。
第三步,壓力測試,我使用loadrunner7.8測試,簡單實用,沒有8.0以上版本的華麗和慢。使用1000個進程測試,發現了意外的結果(見附圖),在本機測試,不用gzip壓縮只用了36秒,而使用gzip壓縮后則是1分49秒,流量在壓縮后從1,315,914,600降到313,125,680,流量隨著文件的壓縮而減少,效果也很明顯,查其原因,應該是因為壓縮和解壓對服務器和瀏覽器的資源消耗,而且是在本機測試,本機排除了帶寬的影響,所以壓縮前性能反而高了。
由于我研究的時間不長,在壓力測試方面還沒在實際項目中測試,不能一概而論,初步分析,如果是局域網項目,帶寬不受限制,不使用壓縮性能會好點,而對于互聯網環境則要考慮壓縮方案,也希望有興趣的開發者共同研究一下這個解決方案在實際項目中的可行性,希望大家討論。
- 描述:
- 大小: 50.7 KB
- 查看次數: 58
- 描述:
- 大小: 76.8 KB
- 查看次數: 36
- 描述:
- 大小: 75.5 KB
- 查看次數: 26
posted on 2008-04-03 19:51
SIMONE 閱讀(2616)
評論(1) 編輯 收藏 所屬分類:
JAVA 、
JavaScript