posts - 495,comments - 227,trackbacks - 0
          久別大家一年了,其實(shí)這一年我從簡(jiǎn)單實(shí)現(xiàn)了一個(gè)Yui-Ext0.33項(xiàng)目后,基本沒有在Ajax表現(xiàn)層花太多的時(shí)間,而是轉(zhuǎn)向研究Jbpm和WebService在項(xiàng)目中的應(yīng)用,而且大半年前Ext推出1.0版本,感覺在項(xiàng)目中升級(jí)使用還不夠成熟,所以在項(xiàng)目中繼續(xù)應(yīng)用小巧的0.33版,基本滿足需要。

          由于現(xiàn)在項(xiàng)目越來越大,而且Ext2已經(jīng)推出,界面實(shí)在充滿誘惑,相信商業(yè)化的Ext2將更適合項(xiàng)目開發(fā),所以現(xiàn)在對(duì)Ext2一些關(guān)鍵問題進(jìn)行研究,首當(dāng)其沖要解決的就是ext-all.js(512K)太大的問題。

          針對(duì)js包太大的問題,有兩個(gè)現(xiàn)在比較流行的解決方案:
          1. 使用jsbuild等工具把需要調(diào)用的js重新包裝,此方法的缺點(diǎn)是Ext用的最多的是form和grid等控件,刪減后包容量減少不明顯,而且我是打包了幾次失敗,就沒耐心了,當(dāng)然,要做到最好調(diào)優(yōu),這個(gè)方案是要考慮的,基本方法就是頁面調(diào)用核心的ext-core.js,然后再把頁面要用的包自己包裝。

          2. 使用gzip在服務(wù)器端犧牲一點(diǎn)cpu資源進(jìn)行壓縮,有效減低傳輸流量,由瀏覽器解壓處理后執(zhí)行。這個(gè)解決方案另我眼前一亮,其實(shí)也不是什么新東西,2005年的老東西了,只是當(dāng)時(shí)沒有想到j(luò)s會(huì)如此龐大,但現(xiàn)在老技術(shù)還是很實(shí)用的。下面將重點(diǎn)研究這個(gè)解決方案。

          第一步,在web.xml增加一個(gè)gzipfilter,不用自己寫,有現(xiàn)成的,到地址:http://sourceforge.net/projects/filterlib下載,新建一個(gè)測(cè)試項(xiàng)目,最簡(jiǎn)單就在index.jsp直接調(diào)用ext-all.js,把tk-filters.jar拷貝到項(xiàng)目的lib目錄,然后在web.xml加入:
          Java代碼 復(fù)制代碼
          1. <filter>   
          2.     <filter-name>CompressingFilter</filter-name>   
          3.     <filter-class>   
          4.         com.tacitknowledge.filters.gzipfilter.GZIPFilter   
          5.     </filter-class>      
          6. </filter>   
          7.         <!-- 這里按自己許多針對(duì)不同文件進(jìn)行filter-mapping配置,比如*.css -->   
          8. <filter-mapping>   
          9.     <filter-name>CompressingFilter</filter-name>   
          10.     <url-pattern>*.js</url-pattern>                     
          11. </filter-mapping>  


          第二步,調(diào)試,調(diào)試js現(xiàn)在發(fā)現(xiàn)最好的工具應(yīng)該是FireFox+firebug(插件),FireFox我用1.5版本,調(diào)試足夠了,我使用Weblogic作調(diào)試服務(wù)器,tomcat也可以,但我的tomcat在server.xml直接配置gzip壓縮功能,所以用weblogic免得測(cè)試不出來。啟動(dòng)項(xiàng)目后,用Firefox打開index.jsp頁面,頁面調(diào)出后可能會(huì)有腳本錯(cuò)誤,但可以不管,關(guān)鍵看文件的大小,打開工具->firebug->open firebug,尋找net項(xiàng),即可看到調(diào)用的ext-all.js的壓縮效果,如附圖的比較,效果不錯(cuò)吧,512K => 137K,如果發(fā)現(xiàn)js壓縮沒效果,注意打開工具->清除私隱數(shù)據(jù),清掉可能存在的cache,再刷新頁面重試。

          第三步,壓力測(cè)試,我使用loadrunner7.8測(cè)試,簡(jiǎn)單實(shí)用,沒有8.0以上版本的華麗和慢。使用1000個(gè)進(jìn)程測(cè)試,發(fā)現(xiàn)了意外的結(jié)果(見附圖),在本機(jī)測(cè)試,不用gzip壓縮只用了36秒,而使用gzip壓縮后則是1分49秒,流量在壓縮后從1,315,914,600降到313,125,680,流量隨著文件的壓縮而減少,效果也很明顯,查其原因,應(yīng)該是因?yàn)閴嚎s和解壓對(duì)服務(wù)器和瀏覽器的資源消耗,而且是在本機(jī)測(cè)試,本機(jī)排除了帶寬的影響,所以壓縮前性能反而高了。

          由于我研究的時(shí)間不長(zhǎng),在壓力測(cè)試方面還沒在實(shí)際項(xiàng)目中測(cè)試,不能一概而論,初步分析,如果是局域網(wǎng)項(xiàng)目,帶寬不受限制,不使用壓縮性能會(huì)好點(diǎn),而對(duì)于互聯(lián)網(wǎng)環(huán)境則要考慮壓縮方案,也希望有興趣的開發(fā)者共同研究一下這個(gè)解決方案在實(shí)際項(xiàng)目中的可行性,希望大家討論。
          • 37a8d707-44d1-369f-b393-0564db55c4a4-thumb
          • 描述:
          • 大小: 50.7 KB
          • 查看次數(shù): 58
          • 73e56e32-afb4-33a5-82bc-5bfaa57aa328-thumb
          • 描述:
          • 大小: 76.8 KB
          • 查看次數(shù): 36
          • 1d6c71a8-0f87-351e-9a37-2bd5a292264c-thumb
          • 描述:
          • 大小: 75.5 KB
          • 查看次數(shù): 26
          posted on 2008-04-03 19:51 SIMONE 閱讀(2622) 評(píng)論(1)  編輯  收藏 所屬分類: JAVAJavaScript

          FeedBack:
          # re: 關(guān)于Ext的Js太大的問題研究解決
          2008-04-16 09:26 | 仍然人
          可否給一個(gè)index.jsp的頁面的例子,我用了,感覺沒什么變化  回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 承德市| 瓮安县| 株洲县| 邮箱| 中超| 临漳县| 淮滨县| 云阳县| 平遥县| 邢台县| 宁阳县| 大足县| 睢宁县| 海城市| 安丘市| 福泉市| 光山县| 临沂市| 五寨县| 龙胜| 咸阳市| 普宁市| 长泰县| 桓仁| 黄冈市| 凤台县| 兰州市| 金堂县| 阳城县| 增城市| 吉木萨尔县| 广南县| 岢岚县| 宁都县| 浠水县| 宜良县| 祁连县| 金华市| 宜昌市| 武夷山市| 越西县|