一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

提高EXT js的加載速度的方法_YOU'RE TOO PERFECT FOR ME......

 yfm10 2010-02-25
提高EXT js的加載速度的方法
2010-01-23 15:46

我們知道,EXT的全部js是比較大的,一個(gè)ext-all-debug.js就達(dá)2m多,它的壓縮版(去掉js中的換行及空格),也達(dá)600多k,這對(duì)于在網(wǎng)速不太快的時(shí),下載js就得漫長(zhǎng)的等待。
JOffice中的日歷任務(wù)控件,js多達(dá)四五個(gè),每個(gè)js大小都達(dá)70多k,盡管我們采用了后加載的方式,則當(dāng)用戶點(diǎn)擊我的任務(wù)功能時(shí),才下載該js,但這樣仍然很慢,因?yàn)橄螺d的js很慢
,鑒于此,在互聯(lián)網(wǎng)上使用類(lèi)似Joffice類(lèi)似的程序,速度會(huì)使很多開(kāi)發(fā)商不敢選用ext作為開(kāi)發(fā)技術(shù)。


我們可以從以下幾種方法來(lái)提高應(yīng)用程序的運(yùn)行速度:

一.前期盡量少加載js.

   這點(diǎn)在Joffice中有比較好的運(yùn)用,采用的是由ScriptMgr.load方法來(lái)完成,加載完成后,其會(huì)在body中插入一個(gè)div,只要當(dāng)前頁(yè)面不被刷新,下次再訪問(wèn)該功能時(shí),不需要再加載js

Java代碼
  1. function $ImportJs(viewName,callback) {   
  2. var b = document.getElementById(viewName+'-hiden');   
  3. if (b != null) {   
  4.      var view = eval('new ' + viewName + '()');   
  5.      callback.call(this, view);   
  6. } else {   
  7.      var jsArr = eval('App.importJs.' + viewName);   
  8.     if(jsArr==undefined){   
  9.          var view = eval('new ' + viewName + '()');   
  10.          callback.call(this, view);   
  11.         return ;   
  12.      }   
  13.      ScriptMgr.load({   
  14.                  scripts : jsArr,   
  15.                  callback : function() {   
  16.                        
  17.                      Ext.DomHelper.append(document.body,"<div id='"  
  18.                                              + viewName   
  19.                                              + "-hiden' style='display:none'></div>");   
  20.                      var view = eval('new ' + viewName + '()');   
  21.                      callback.call(this, view);   
  22.                  }   
  23.      });   
  24. }   

二.用Gzip進(jìn)行js的超強(qiáng)壓縮

Gzip的官方網(wǎng)址為:
http://www./software/gzip/

Gzip的使用很簡(jiǎn)單

解壓至某個(gè)目錄,會(huì)看到有一個(gè)Gzip.exe文件,然后在命令窗口進(jìn)入該目錄,執(zhí)行
gzip ext-all.js
ext-all.js馬上變成為ext-all.js.gz
大小從原來(lái)600多k搖身一變成了160多k,簡(jiǎn)直壓細(xì)小很多。這回下載速度就非??炝?。
那么瀏覽器能否解析這種壓縮文件?答案是肯定的,前提是告訴瀏覽器,這種文件需要解壓,然后再執(zhí)行,解壓的過(guò)程由瀏覽器來(lái)執(zhí)行。
那么應(yīng)用程序如何告訴瀏覽器,該文件需要解壓呢,這得由服務(wù)器通過(guò)Http的Header指令來(lái)進(jìn)行。
在JOffice中,就是通過(guò)Filter來(lái)進(jìn)行的。

1.把ext.all.js.gz文件名改為ext.all.gzjs,F(xiàn)ilter等一下就會(huì)攔截這種文件的訪問(wèn)。

2.寫(xiě)一個(gè)Filter,完成向Header添加指令
   代碼如下:

 

Java代碼
  1. package com.htsoft.core.web.filter;   
  2.     import java.io.IOException;   
  3.     import java.util.HashMap;   
  4.     import java.util.Iterator;   
  5.     import java.util.Map;   
  6.     import javax.servlet.Filter;   
  7.     import javax.servlet.FilterChain;   
  8.     import javax.servlet.FilterConfig;   
  9.     import javax.servlet.ServletException;   
  10.     import javax.servlet.ServletRequest;   
  11.     import javax.servlet.ServletResponse;   
  12.     import javax.servlet.http.HttpServletRequest;   
  13.     import javax.servlet.http.HttpServletResponse;   
  14.        
  15.     public class GzipJsFilter implements Filter {   
  16.          Map headers = new HashMap();   
  17.         public void destroy() {   
  18.          }   
  19.         public void doFilter(ServletRequest req, ServletResponse res,   
  20.                  FilterChain chain) throws IOException, ServletException {   
  21.             if(req instanceof HttpServletRequest) {   
  22.                  doFilter((HttpServletRequest)req, (HttpServletResponse)res, chain);   
  23.              }else {   
  24.                  chain.doFilter(req, res);   
  25.              }   
  26.          }   
  27.         public void doFilter(HttpServletRequest request,   
  28.                  HttpServletResponse response, FilterChain chain)   
  29.                 throws IOException, ServletException {   
  30.                  request.setCharacterEncoding("UTF-8");   
  31.                 for(Iterator it = headers.entrySet().iterator();it.hasNext();) {   
  32.                      Map.Entry entry = (Map.Entry)it.next();   
  33.                      response.addHeader((String)entry.getKey(),(String)entry.getValue());   
  34.                  }   
  35.                  chain.doFilter(request, response);   
  36.          }   
  37.        
  38.         public void init(FilterConfig config) throws ServletException {   
  39.              String headersStr = config.getInitParameter("headers");   
  40.              String[] headers = headersStr.split(",");   
  41.             for(int i = 0; i < headers.length; i++) {   
  42.                  String[] temp = headers[i].split("=");   
  43.                 this.headers.put(temp[0].trim(), temp[1].trim());   
  44.              }   
  45.          }   
  46.      }  

   
3.在WEB.xml 文件中,添加以下配置:

Java代碼
  1. <filter>     
  2.      <filter-name>GzipJsFilter</filter-name>     
  3.      <filter-class>com.htsoft.core.web.filter.GzipJsFilter</filter-class>     
  4.      <init-param>     
  5.          <param-name>headers</param-name>     
  6.          <param-value>Content-Encoding=gzip</param-value>     
  7.      </init-param>   
  8. </filter>   
  9. <filter-mapping>   
  10. <filter-name>GzipJsFilter</filter-name>   
  11. <url-pattern>*.gzjs</url-pattern>   
  12. lt;/filter-mapping>   
  13. <servlet-mapping>  


4.在index.jsp中引入該壓縮文件:
<script type="text/javascript" src="<%=request.getContextPath()%>/ext3/ext-all.gzjs"></script>


可以看到瀏覽器解壓后,其代碼是一樣的:

 

 

 


大家可以看到以上,這塊是在外網(wǎng)使用的,其速度是比較快的。當(dāng)然,瀏覽器解壓這個(gè)文件需要一點(diǎn)時(shí)間,不過(guò)在本地解壓是非??斓模梢圆挥霉?。

 

 

三、通過(guò)Js緩存,更加可以提高EXT的加載速度,關(guān)于緩存,本文不作討論。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多

    国产又大又黄又粗又免费| 国产精品日韩欧美第一页| 婷婷色国产精品视频一区| 亚洲国产欧美久久精品| 国产综合香蕉五月婷在线| 一区二区三区国产日韩| 亚洲视频在线观看免费中文字幕| av免费视屏在线观看| 麻豆精品视频一二三区| 国产成人精品一区二区在线看| 日韩不卡一区二区在线| 成人亚洲国产精品一区不卡| 亚洲中文字幕在线视频频道| 日韩国产亚洲一区二区三区| 冬爱琴音一区二区中文字幕| 欧美视频在线观看一区| 国产成人精品一区二三区在线观看| 日系韩系还是欧美久久| 精品亚洲香蕉久久综合网| 老司机亚洲精品一区二区| 精品精品国产欧美在线| 国产成人国产精品国产三级| 成人精品日韩专区在线观看| 亚洲欧美日韩国产自拍| 欧美日韩国产二三四区| 国产精品一区二区传媒蜜臀| 欧美成人精品一区二区久久| 欧美一区二区口爆吞精| 中文字幕中文字幕一区二区| 亚洲国产精品久久琪琪| 中国一区二区三区不卡| 蜜臀人妻一区二区三区| 出差被公高潮久久中文字幕| 人妻熟女中文字幕在线| 99久久婷婷国产亚洲综合精品| 中文字幕一区二区免费| 国产真人无遮挡免费视频一区| 字幕日本欧美一区二区| 麻豆国产精品一区二区三区| 日本道播放一区二区三区| 日韩精品综合福利在线观看|