日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
提高程序運行速度讓ExtJS華而又實

Ext JS雖然有著華麗的界面,但是真正使用過的人才知道,它運行起來的速度是讓人抓狂的,而導致速度慢的重要原因,就是JavaScript的加載。Ext JS的全部JavaScript是比較大的,一個ext-all-debug.js就達2m多,它的壓縮版也達600多k,這對于在網(wǎng)速不太快的時,下載JavaScript就得漫長的等待。

創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、富裕網(wǎng)絡(luò)推廣、微信小程序開發(fā)、富裕網(wǎng)絡(luò)營銷、富裕企業(yè)策劃、富裕品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)公司為所有大學生創(chuàng)業(yè)者提供富裕建站搭建服務(wù),24小時服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com

推薦閱讀:應(yīng)用最廣的十大Javascript框架

其中日歷任務(wù)控件,JavaScript多達四五個,每個JavaScript大小都達70多k,盡管我們采用了后加載的方式,則當用戶點擊我的任務(wù)功能時,才下載該JavaScript,但這樣仍然很慢,因為下載的JavaScript很慢,鑒于此,在互聯(lián)網(wǎng)上使用類似Joffice類似的程序,速度會使很多開發(fā)商不敢選用Ext JS作為開發(fā)技術(shù)。我們可以從以下幾種方法來提高應(yīng)用程序的運行速度:

一.前期盡量少加載JavaScript

這點在Joffice中有比較好的運用,采用的是由ScriptMgr.load方法來完成,加載完成后,其會在body中插入一個DIV,只要當前頁面不被刷新,下次再訪問該功能時,不需要再加載JavaScript。實例代碼:

 
 
 
  1. view sourceprint?01 function $ImportJs(viewName,callback) {     
  2. var b = document.getElementById(viewName+'-hiden');       
  3.  
  4.  if (b != null) {       
  5.  
  6.       var view = eval('new ' + viewName + '()');       
  7.  
  8.      callback.call(this, view);       
  9.  
  10.  } else {       
  11.  
  12.       var jsArr = eval('App.importJs.' + viewName);       
  13.  
  14.      if(jsArr==undefined){       
  15.  
  16.           var view = eval('new ' + viewName + '()');       
  17.  
  18.           callback.call(this, view);       
  19.  
  20.          return ;       
  21.  
  22.      }       
  23.  
  24.       ScriptMgr.load({       
  25.  
  26.                   scripts : jsArr,       
  27.  
  28.                   callback : function() {       
  29.  
  30.                              
  31.  
  32.                      Ext.DomHelper.append(document.body,"
  33.  
  34.                                               + viewName       
  35.  
  36.                                               + "-hiden' style='display:none'>
");       
  •                       var view = eval('new ' + viewName + '()');       
  •  
  •                       callback.call(this, view);       
  •  
  •                   }       
  •  
  •       });       
  •  
  •  }  
  • #p#

    二.用Gzip進行JavaScript的超強壓縮

    Gzip的官方網(wǎng)址

    http://www.gnu.org/software/gzip/

    Gzip的使用很簡單

    解壓至某個目錄,會看到有一個Gzip.exe文件,然后在命令窗口進入該目錄,執(zhí)行:

    gzip ext-all.js

    ext-all.js馬上變成為ext-all.js.gz。大小從原來600多k搖身一變成了160多k,簡直壓細小很多。這回下載速度就非??炝恕D敲礊g覽器能否解析這種壓縮文件?答案是肯定的,前提是告訴瀏覽器,這種文件需要解壓,然后再執(zhí)行,解壓的過程由瀏覽器來執(zhí)行。那么應(yīng)用程序如何告訴瀏覽器,該文件需要解壓呢,這得由服務(wù)器通過Http的Header指令來進行。在JOffice中,就是通過Filter來進行的。

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

    2.寫一個Filter,完成向Header添加指令。

     
     
     
    1. view sourceprint?01 package com.htsoft.core.web.filter;       
    2.  
    3.     import java.io.IOException;       
    4.  
    5.      import java.util.HashMap;       
    6.  
    7.      import java.util.Iterator;       
    8.  
    9.      import java.util.Map;       
    10.  
    11.      import javax.servlet.Filter;       
    12.  
    13.      import javax.servlet.FilterChain;       
    14.  
    15.     import javax.servlet.FilterConfig;       
    16.  
    17.      import javax.servlet.ServletException;    
    18.      
    19.      import javax.servlet.ServletRequest;       
    20.  
    21.      import javax.servlet.ServletResponse;       
    22.  
    23.      import javax.servlet.http.HttpServletRequest;       
    24.  
    25.      import javax.servlet.http.HttpServletResponse;       
    26.  
    27.              
    28.  
    29.      public class GzipJsFilter implements Filter {       
    30.  
    31.           Map headers = new HashMap();       
    32.  
    33.          public void destroy() {       
    34.  
    35.           }       
    36.  
    37.          public void doFilter(ServletRequest req, ServletResponse res,       
    38.  
    39.                  FilterChain chain) throws IOException, ServletException {       
    40.  
    41.              if(req instanceof HttpServletRequest) {       
    42.  
    43.                   doFilter((HttpServletRequest)req, (HttpServletResponse)res, chain);       
    44.  
    45.              }else {       
    46.  
    47.                   chain.doFilter(req, res);       
    48.  
    49.               }       
    50.  
    51.           }    
    52.      
    53.          public void doFilter(HttpServletRequest request,       
    54.  
    55.                   HttpServletResponse response, FilterChain chain)       
    56.  
    57.                  throws IOException, ServletException {       
    58.  
    59.                  request.setCharacterEncoding("UTF-8");       
    60.  
    61.                  for(Iterator it = headers.entrySet().iterator();it.hasNext();) {       
    62.  
    63.                       Map.Entry entry = (Map.Entry)it.next();       
    64.  
    65.                       response.addHeader((String)entry.getKey(),(String)entry.getValue());       
    66.  
    67.                   }       
    68.                  chain.doFilter(request, response);       
    69.  
    70.           }       
    71.  
    72.              
    73.  
    74.          public void init(FilterConfig config) throws ServletException {       
    75.  
    76.               String headersStr = config.getInitParameter("headers");       
    77.  
    78.               String[] headers = headersStr.split(",");       
    79.  
    80.              for(int i = 0; i < headers.length; i++) {       
    81.  
    82.                  String[] temp = headers[i].split("=");       
    83.  
    84.                  this.headers.put(temp[0].trim(), temp[1].trim());       
    85.  
    86.               }       
    87.  
    88.           }       
    89.      }   
    90.  
    91.       
    92. 3.在WEB.xml 文件中,添加以下配置:  
    93.  
    94. view sourceprint?01          
    95.  
    96.       GzipJsFilter         
    97.  
    98.       com.htsoft.core.web.filter.GzipJsFilter         
    99.  
    100.                
    101.  
    102.           headers         
    103.  
    104.           Content-Encoding=gzip         
    105.  
    106.              
    107.  
    108.        
    109.  
    110.        
    111.  
    112. GzipJsFilter       
    113.  
    114. *.gzjs       
    115.  
    116. lt;/filter-mapping>       
    117.  
    118.   

    4.在index.jsp中引入該壓縮文件:

     
     
     
    1.  
    2.  

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

    大家可以看到以上,這塊是在外網(wǎng)使用的,其速度是比較快的。當然,瀏覽器解壓這個文件需要一點時間,不過在本地解壓是非??斓?,可以不用管。雖說不能完全解決其速度問題,但是還是能有所幫助。

    原文地址:http://www.cnblogs.com/single1970/archive/2010/08/19/Extjs.html


    本文標題:提高程序運行速度讓ExtJS華而又實
    URL標題:http://www.dlmjj.cn/article/dphpdoh.html