成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

提高程序運行速度 讓Ext JS華而又實

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

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

51CTO推薦閱讀:應用最廣的十大Javascript框架

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

一.前期盡量少加載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,"<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進行JavaScript的超強壓縮

Gzip的官方網址

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

Gzip的使用很簡單

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

gzip ext-all.js

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

1.把ext.all.js.gz文件名改為ext.all.gzjs,Filter等一下就會攔截這種文件的訪問。

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 <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.  

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

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

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

【編輯推薦】

  1. 移花接木 實例講解Ext JS控件的擴展
  2. Ext JS + jQTouch + Raphael = Sencha
  3. 應用最廣的十大Javascript框架
  4. JavaScript框架的選擇標準
責任編輯:王曉東 來源: 博客園
相關推薦

2018-09-19 15:46:51

編程語言Python編譯器

2018-03-09 10:15:00

Linux應用程序運行速度

2020-04-30 21:25:33

Python 函數程序員

2018-08-02 16:17:34

Python 開發編程語言

2019-09-23 14:01:57

iPhoneA13測試

2009-08-11 09:10:26

Windows 7系統提速

2015-11-16 11:53:06

程序員效率加班

2012-10-24 09:40:46

網絡優化系統優化

2025-03-17 03:00:00

C#性能并行處理

2020-12-15 06:44:14

程序運行速度

2009-02-25 08:47:42

MacSafari4

2021-03-07 22:12:04

Windows 10Windows微軟

2010-01-20 13:19:01

VB.NET錯誤處理

2010-04-12 10:01:43

Windows 7運行速度

2011-01-12 11:22:24

微軟認證

2023-11-20 09:57:03

內聯函數C++

2024-04-29 08:16:18

2024-09-27 08:35:33

數組JavaScript性能

2016-02-22 09:27:18

2010-05-10 13:21:16

Windows 7系統日志
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线视频 亚洲 | 亚洲成人一区二区 | 亚洲美女在线视频 | 亚洲国产精品成人无久久精品 | 荷兰欧美一级毛片 | 日韩在线电影 | 国产在线视频网 | 久久黄视频| 丁香综合 | 色综合天天天天做夜夜夜夜做 | 国产精品久久久免费 | 电影午夜精品一区二区三区 | 久久久999精品 | 国产精品www| 国产在线拍偷自揄拍视频 | 国产视频精品免费 | 精品美女视频在免费观看 | 亚洲激精日韩激精欧美精品 | 日韩精品一区二区三区中文字幕 | 国产一区 | 亚洲a一区二区 | 成人高清在线 | 二区久久| 麻豆av在线免费观看 | 国产成人精品久久二区二区91 | 久久大 | 国产精品99久久久久久久vr | 野狼在线社区2017入口 | 在线国产小视频 | 午夜精品一区二区三区三上悠亚 | 国产精品久久久久av | 亚洲成人av在线播放 | 精品一区在线免费观看 | 日韩中文字幕久久 | 亚洲性视频网站 | 国产精品免费av | 91精品国产91久久久 | 免费一区在线 | 91在线精品视频 | 国产精品综合色区在线观看 | 午夜免费网站 |