提高程序运行速度 让Ext JS华而又实

Ext2.0教程一:Ext介绍以及 ext页面布局 学习ext有一段时间了,也开发了几个项目,抽点时间做个总结,刚好公司让我做个Ext培训,于是随便写个Ext教程。 Ext介绍Ext是一个很不错的Ajax框架,可以用来开发带有华丽外观的胖客户端应用,使得我们的b/s应用更加具有活力及生命力,提高用户体验。ExtJS是一个用javascript编写,与后台技术无关的前端ajax框架。因此,可以把Ext用在.Net、Java、Php等各种开 阅读详情

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

 

 

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

Ext JS的模块化开发(Package) Ext JS中的生产环境编译 在使用 sencha app build production命令构建生产环境时,Sencha CMD会在应用目录下创建 “build/production/应用名” 子目录,并将构建的结果放置与此目录下。举例来看: 生产环境的JS源码编译结果会集中到一下两个文件: index.html app.js 整个的机制就是: CMD会将所有的源码进行去注释、去空格等操作进行编译,最后汇总到一个html 和 js 文件中。这些编译的结果包括哪些部分呢? 首先包含时应用中自己编写的 阅读详情

相关推荐

Ext JS与JSP集成的MVC模式Web应用实践

Ext JS是一个功能丰富的JavaScript框架,它提供了一整套用于构建丰富的互联网应用程序的UI组件,使得开发者能够创建交互式的Web界面。它支持高性能,跨浏览器的用户界面,简化了客户端的开发。JSP允许开发者创建自定义标签库来扩展功能。自定义标签通常包含一个TLD(Tag Library Descriptor)文件,它定义了标签库的结构和每个标签的行为。创建自定义标签涉及定义标签处理器类,该类继承自,并实现需要的行为:");然后在TLD文件中声明标签:<tag>

weixin_31938351的博客 831

Ext.js性能优化漫谈

Ext.js是一个用于建立企业级应用的纯JS框架。毫无疑问,它为我们提供了大量的组件,比如container,panel,field,grid,这些组件使用起来很方便,不需要去写js和html,但是ext.js的性能却存在很大的问题。比如,我在公司负责的页面,在本地的加载时间居然需要十几秒,当然这可能和后台服务有关,但是前台的渲染和执行也耗费了大量的时间。下面就我个人感受和网上的一些信息对Ext.j

neal1991的专栏 2103

cad加速,CAD的运行速度提高两倍

cad加速 把里面的复制到CAD的安装目录下的Support文件夹里即可,CAD的运行速度提高两倍,再CAD2006和CAD2007更加明显!

提高EXT js的加载速度的方法

我们知道,EXT的全部js是比较大的,一个ext-all-debug.js就达2m多,它的压缩版(去掉js中的换行及空格),也达600多k,这对于在网速不太快的时,下载js就得漫长的等待。 JOffice中的日历任务控件,js多达四五个,每个js大小都达70多k,尽管我们采用了后加载的方式,则当用户点击我的任务功能时,才下载该js,但这样仍然很慢,因为下载的js很慢 ,鉴于此,在互联网上使用类...

man1900 640

MFC界面库BCGControlBar v32.0 - 对话框、仪表盘控件升级

亲爱的BCGSoft用户,我们非常高兴地宣布BCGControlBar Professional for MFC和BCGSuite for MFCv32.0正式发布!新版本支持Windows 11、增强功能区简化模式、改进控件外观等,以及其他新功能和改进。需要最新版的可以点击这里【BCG下载】 BCGControlBar Pro for MFC v32.0正式版下载 对话框和表单 1. 添加了一个新的全局标志globalData.m_bAutoPrepareComboListStyles:如果您希望.

需要界面开发、IDE工具研发中文教程资料的小伙伴,记得私信我~ 1145

《双剑合璧:双 IMU 驱动的高精度 AHRS 实战宝典(基于 ROS2)》

本文系统阐述了基于双IMU的高精度姿态与航向参考系统(AHRS)设计与实现方法。文章首先分析了传统单IMU系统的局限性,提出通过双IMU冗余配置实现性能互补的方案。从硬件设计要点(包括IMU选型策略、电路降噪方法、PCB布局规范),到算法实现方案(互补滤波、卡尔曼滤波等融合算法),再到ROS2软件架构与调优策略,全方位展示了双IMU系统的技术实现路径。特别强调快速性与高精度平衡的方法,包括动态参数调整、双IMU权重优化等核心技巧。最后总结了硬件降噪、算法调优等实用心法。

bother3000的博客 2023

GZip压缩和按需装载提升Ext Js的性能(不要说用Ext很慢了)

ext-all.js这个文件都有500多k,在页面中直接引用这个js文件是很不现实的,曾经在一个大的项目中使用这个js,则直接导致页面半天出不来的后果。于是自己研究了下,目前通过下面的方法来优化提升Ext Js的性能(转载请注明出处http://blog.youkuaiyun.com/selley):使用JSVM、        JSVM (JavaScript Virtual

退步原来是向前 4524

第12章 STM32+BH1750光照传感器+OLED模块显示环境光照强度

相比光敏传感器,它可以直接输出环境光照强度的数值(范围是0~65535lx),非常适合懒人党,各位的传感器买到手后,赶紧跟着文章试试吧!

qq_44645742的博客 1万+

如何完成EXT3中的JS后加载,提高应用程序的加载速度

EXT的应用程序是基于WEB 2.0上构建的,也即One Application One Page,即一个应用程序只有一个页面,当我们开发的功能比较多的时候,也即需要在那个页面中加入很多我们写的js,如如我们在index.jsp中大量加入不同的应用程序模块的 js: &lt;script type="text/javascript" src="&lt;%=request.getCo...

man1900 180

liquibase扩展支持达梦数据库

近期项目中需要支持国产数据库,需要liquibase底层支持达梦数据库,记录下操作的详细步骤以便分享。 1.liquibase支持的数据库很多如MySQL, PostgreSQL, Oracle, Sql Server, DB2。但是达梦数据库并不支持,所以需要新建DMDatabase类来适配达梦数据库。达梦语法和Oracle很像所以只需要复制liquibase-core下的Oracle Database做些修改就可了。以下为需要修改的地方 public class DMDatabase extends A

qq_43677719的博客 5472

Plant simulation、Flexsim、Automod、Emulate3D、VisuaComponent仿真软件对比

E3D在行业内以展示效果好,入门阶段易学易用人机界面友好,电控仿真连接方便不需要借助其他第三方软件,E3D平台开放度较高用户DIY程度强,数据分析功能针对要评定对象的KPI的可根据项目或者使用者需求进行评定。3.支持导入导出多种格式的文件,比如dwg、dxf、fbx、obj、3ds、step、stp、iges、skp、stl、wrl、 bmp 等等。3.软件自带模型组件库程序代码开放,用户可以引用、修改、拷贝,按照自己的逻辑修改模型,或者创建模型并保存到组件库与别人共享。3. 支持导出布局图片。

qq_43342303的博客 3576

EXT3中按照模块加载JS,提高应用程序的加载速度 。

说明: Ext是一个强大的js类库,它提供了丰富的,非常漂亮的外观体验,成为众多界面层开发人员的追捧!其核心的组件基本覆盖了我们构建富客户端的常用的组件。 在B/C架构出来的都是基于web2.0,也即是One Application One Page (一个应用一个页面),这样如果你Web程序功能性过大,在加载JS的时候,会导致页面加载非常的慢,特别是的IE,Chrome和Firefox相对好

Draco 2267

机器学习实例(预测房价中位数)(附代码)

1、下载数据: 下载一个压缩文件housing.tgz即可,其包含housing.csv(已经包含书有数据。),用 tax xzf housing.tgz 来解压提取CSV文件。 import os import tarfile import urllib.request DOWNLOAD_ROOT = "https://raw.githubusercontent.com/ageron/handson-ml2/master/" HOUSING_PATH = os.path.join("datasets",

qq_51153436的博客 2755

Ext JS 4.2 Grid预览

原文:http://www.sencha.com/blog/first-look-at-ext-js-4-2-grid?mkt_tok=3RkMMJWWfF9wsRokuKTBZKXonjHpfsX77%2BsqWK%2B0lMI%2F0ER3fOvrPUfGjI4HRcV0dvycMRAVFZl5nR9dFOOdfQ%3D%3D      随着新的Ext JS 4.2 Beta版本的发布,又发生

黄灯桥的专栏 7126

Verilator+VSCode实战:5分钟搞定Verilog语法检查与波形调试

本文详细介绍了如何将Verilator仿真器与VSCode编辑器高效集成,打造极速的Verilog开发工作流。通过环境配置、实时语法检查、一键仿真与波形生成等实战技巧,帮助IC设计工程师在几分钟内完成从代码编写到波形调试的全过程,大幅提升中小规模模块的验证效率。

weixin_28454475的博客 469

卫朋:IPD流程落地——产品计划阶段拆解

IPD计划阶段拆解

产品线负责人 956

Building Ext From Source(制定自己的EXT版本)

入门有几种方案可制定Ext,制成裁减过的版本输出。而且这是至关重要的,为什么呢? 只需包含你所需的文件,减少部署时文件过大的开销。 你可缩小源码大小,也是部署时的重要一环。 如果你是技术支持用户 有一个可用的SVN访问,你可在开发阶段中创建一个中间临时的版本,用于测试、试用新功能和官方发布新版之间的bug调试。 你亦可利用一些自动化的工具,或直接整合

solem的专栏 804

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Ext.get()与Ext.fly()之区别

转自http://www.cnblogs.com/sznumen/articles/1567185.html   从一开始接触Ext就看到有Ext.fly这个函数,当时觉得这个跟Ext.get没什么区别,加之当时对JS性能相关 问题认识肤浅,也一直没有在意其区别,今日看learning extjs一书,看到了有专门对Ext.fly特别强调的一处: This isn't exactly

水果篮子 5053

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

JavaScript表格组件加载速度测试_0

网络技术一直在发展并提高,人们期望Web应用程序能提高桌面程序那样的性能和用户体验。而数据表格又是企业级Web应用最为重要的部分,我们已经用了大量的数据(行数和列数)来测试流行的 JavaScript 表格的页面加载速度。 我们测试了四种表格组件: ● Dojo grid ● jqGrid ● Ext JS grid ● dhtmlxGrid 在我们的测试中,我们针对每种表格组件创建了一个示例,在...

qq_42536850的博客 307

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

如何提高sencha的加载速度

我做的是基于HTML5的项目,在手机端浏览器中运行。当开发的模块越来越多时打包生成的app.js会越来越大,如何提高加载速度是后期增加新功能的关键 思路1、基础模块打包在一个app.js中 并且 运行其中的某个模块时实现类的动态加载 2、新增加的高级功能  不再打包到app.js中 而是实行动态加载文件的形式完成 架构如下 具体做法      写一个公共controller,起到路

JavaSun的专栏 376

ExtJs 4.x 学习小记:Ext.require动态加载js文件

一般我们在网页中中引用html或jsp文件,都是在

bdmh的专栏 1万+

ext加载一个html文件夹,ExtJs 4.x 学习小记:Ext.require动态加载js文件

一般我们在网页中中引用html或jsp文件,都是在页面文件中通过一下方式静态的引用在js文件数量少的情况下还可以接受,当js文件较多时,如果都这样使用静态方式加载,会增加浏览器的负担,如果能改为动态加载,需要时才加载要用到的js文件,这样可以一定程度上提高浏览器的浏览速度,Extjs提供了require方法来动态加载js文件要使用动态加载,首先要设置Ext.Loader的enabled配置项为tr...

weixin_30069591的博客 345
上一篇: 基于JSON实现数据列表翻页显示
下一篇: 如何保护.net中的dll文件(防破解、反编译)
escode
博客等级 码龄22年 33粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值