自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

提高程序運(yùn)行速度 讓Ext JS華而又實(shí)

開發(fā) 前端
Ext JS雖然有著華麗的界面,但是真正使用過的人才知道,它運(yùn)行起來的速度是讓人抓狂的,而導(dǎo)致速度慢的重要原因,就是JavaScript的加載,這里我們介紹幾種方法,來提高Ext JS的運(yùn)行速度,盡管不能完全解決,但對(duì)于程序還是很有幫助的。

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

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

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

一.前期盡量少加載JavaScript

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

  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,"<div id='"     
  33.  
  34.                                               + viewName       
  35.  
  36.                                               + "-hiden' style='display:none'></div>");       
  37.                       var view = eval('new ' + viewName + '()');       
  38.  
  39.                       callback.call(this, view);       
  40.  
  41.                   }       
  42.  
  43.       });       
  44.  
  45.  }  

 

#p#

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

Gzip的官方網(wǎng)址

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

Gzip的使用很簡單

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

gzip ext-all.js

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

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

2.寫一個(gè)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 <filter>         
  95.  
  96.       <filter-name>GzipJsFilter</filter-name>         
  97.  
  98.       <filter-class>com.htsoft.core.web.filter.GzipJsFilter</filter-class>         
  99.  
  100.       <init-param>         
  101.  
  102.           <param-name>headers</param-name>         
  103.  
  104.           <param-value>Content-Encoding=gzip</param-value>         
  105.  
  106.       </init-param>       
  107.  
  108. </filter>       
  109.  
  110. <filter-mapping>       
  111.  
  112. <filter-name>GzipJsFilter</filter-name>       
  113.  
  114. <url-pattern>*.gzjs</url-pattern>       
  115.  
  116. lt;/filter-mapping>       
  117.  
  118. <servlet-mapping>  

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

  1. <script type="text/javascript" src="<%=request.getContextPath()%>/ext3/ext-all.gzjs"></script> 
  2.  

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

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

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

【編輯推薦】

  1. 移花接木 實(shí)例講解Ext JS控件的擴(kuò)展
  2. Ext JS + jQTouch + Raphael = Sencha
  3. 應(yīng)用最廣的十大Javascript框架
  4. JavaScript框架的選擇標(biāo)準(zhǔn)
責(zé)任編輯:王曉東 來源: 博客園
相關(guān)推薦

2018-09-19 15:46:51

編程語言Python編譯器

2018-03-09 10:15:00

Linux應(yīng)用程序運(yùn)行速度

2020-04-30 21:25:33

Python 函數(shù)程序員

2018-08-02 16:17:34

Python 開發(fā)編程語言

2019-09-23 14:01:57

iPhoneA13測(cè)試

2009-08-11 09:10:26

Windows 7系統(tǒng)提速

2015-11-16 11:53:06

程序員效率加班

2012-10-24 09:40:46

網(wǎng)絡(luò)優(yōu)化系統(tǒng)優(yōu)化

2025-03-17 03:00:00

C#性能并行處理

2020-12-15 06:44:14

程序運(yùn)行速度

2009-02-25 08:47:42

MacSafari4

2021-03-07 22:12:04

Windows 10Windows微軟

2010-01-20 13:19:01

VB.NET錯(cuò)誤處理

2011-01-12 11:22:24

微軟認(rèn)證

2010-04-12 10:01:43

Windows 7運(yùn)行速度

2016-02-22 09:27:18

2018-06-27 09:00:00

Linux運(yùn)行速度CPU信息

2009-06-18 12:21:07

javascriptdom

2010-05-10 13:21:16

Windows 7系統(tǒng)日志

2024-09-27 08:35:33

數(shù)組JavaScript性能
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)