`
elstage
  • 浏览: 79739 次
  • 性别: Icon_minigender_1
  • 来自: 地球
社区版块
存档分类
最新评论

讨论Ext项目的性能优化

    博客分类:
  • Ext
阅读更多

现在开发的项目用了Ext+Dwr,页面初始化的时间比较长(我的项目左边是树,右边使用tabPanel引入iframe),有什么优化方法呢?

 

整理各位大侠的意见如下:

方法一:

压缩传输,比如tomcat6下面启用gzip,修改server.xml的配置:
<Connector port="8081" protocol="HTTP/1.1" maxThreads="150" 
  compression="on"
  noCompressionUserAgents="gozilla, traviata" 
  compressableMimeType="text/html,text/xml,text/javascript,text/css"
  connectionTimeout="20000" redirectPort="8443" URIEncoding="GBK"/>

 

一篇介绍Gzip的文章:http://betterexplained.com/articles/how-to-optimize-your-site-with-gzip-compression/  不错!

  

一篇介绍iframe直接使用父页面的js和css技术的文章:http://matthew.delmarters.com/weblog/injecting-javascript-and-css-into-iframes/#comment-64462 不是很明白!

 

当然还有其他的一些压缩工具:比如E3压缩。

 

方法二:

项目中Ext代码优化。

1. 不推荐使用iframe加载的方式,使用autoload。

2. 在完成了组件对象的使用以后必须回收,可以使用对应对象的destroy,beforeDestroy,removeAll等方法销毁对象以及一些孤立节点。

3. 不要把继承层次弄的太深。

。。。

分享到:
评论
49 楼 icewubin 2008-11-26  
shevliu 写道
EXT在企业应用中,体积应该不成问题。
局域网传输很快,况且有缓存。

令人头疼就是加载速度
就一个普通页面:一棵树,一个20条数据的grid,再加几个form。在奔四,512内存的机器上居然需要3-5秒的加载时间,CPU占用率100%。很是郁闷

P4 频率多少?
48 楼 shevliu 2008-11-26  
EXT在企业应用中,体积应该不成问题。
局域网传输很快,况且有缓存。

令人头疼就是加载速度
就一个普通页面:一棵树,一个20条数据的grid,再加几个form。在奔四,512内存的机器上居然需要3-5秒的加载时间,CPU占用率100%。很是郁闷
47 楼 icewubin 2008-11-26  
fins 写道

我的观点:
Ext2.2 的grid , 性能提升微乎其微.
Ext所说的性能优化是纯"视觉系"的.
他只是玩了一个小花招, 延迟渲染了列表行(用了一个"伪异步"的技巧).

是不是相当于live-grid延迟渲染的效果呢?
46 楼 fins 2008-11-26  
icewubin 写道
elstage 写道
说是ext2.2优化了grid的渲染


毛估估测了下,渲染4个表格,每个数据960条,就是
ext-2.2\examples\grid\grid3.html中的本地数据源翻了5倍的结果,耗时23秒(双核迅驰1.6)。

算下来渲染一个500条数据的表格依然要花3秒,在稍微机器性能差一点的环境上,时间一定更长。

先赞一个,性能提高不少,但是依然是有限制的,也就是把原先的200条记录的上限提高到大约450条左右吧,随口估计的。

其实传统table-tr-td的表格也是有上限的,只不过上限比较高,很多人没注意而已。



我的观点:
Ext2.2 的grid , 性能提升微乎其微.
Ext所说的性能优化是纯"视觉系"的.

他只是玩了一个小花招, 延迟渲染了列表行(用了一个"伪异步"的技巧).


45 楼 icewubin 2008-11-26  
elstage 写道
说是ext2.2优化了grid的渲染


毛估估测了下,渲染4个表格,每个数据960条,就是
ext-2.2\examples\grid\grid3.html中的本地数据源翻了5倍的结果,耗时23秒(双核迅驰1.6)。

算下来渲染一个500条数据的表格依然要花3秒,在稍微机器性能差一点的环境上,时间一定更长。

先赞一个,性能提高不少,但是依然是有限制的,也就是把原先的200条记录的上限提高到大约450条左右吧,随口估计的。

其实传统table-tr-td的表格也是有上限的,只不过上限比较高,很多人没注意而已。
44 楼 elstage 2008-11-26  
icewubin 写道

nihongye 写道

icewubin 写道

nihongye 写道
1.js压缩 2.抛弃iframe,避免了重复解析ext-all.js的开销(据说gzip+ie不会重复解析) 3.解决内存的不释放 ext的性能问题没有多少值得讨论的。 合理利用EXT的组件进行UI设计,因为EXT的不少效果的渲染在IE下性能非常低下,比如超过100行数据的默认grid的渲染,超过200个的column布局的堆砌(这半句我自己都看不懂),动画。。。 这些情况是属于极端的... 啊,没有吧,很多初学EXT的很容易做出个100多行的grid的,用写页面方式做这种表格再正常不过了。 比如:http://fund.eastmoney.com/fund.html 然后又不清楚,这个慢到底是哪个环节造成的,开始乱猜。

说是ext2.2优化了grid的渲染
43 楼 icewubin 2008-11-26  
nihongye 写道
icewubin 写道
nihongye 写道
1.js压缩
2.抛弃iframe,避免了重复解析ext-all.js的开销(据说gzip+ie不会重复解析)
3.解决内存的不释放
ext的性能问题没有多少值得讨论的。

合理利用EXT的组件进行UI设计,因为EXT的不少效果的渲染在IE下性能非常低下,比如超过100行数据的默认grid的渲染,超过200个的column布局的堆砌(这半句我自己都看不懂),动画。。。

这些情况是属于极端的...

啊,没有吧,很多初学EXT的很容易做出个100多行的grid的,用写页面方式做这种表格再正常不过了。
比如:http://fund.eastmoney.com/fund.html

然后又不清楚,这个慢到底是哪个环节造成的,开始乱猜。
42 楼 nihongye 2008-11-25  
icewubin 写道
nihongye 写道
1.js压缩
2.抛弃iframe,避免了重复解析ext-all.js的开销(据说gzip+ie不会重复解析)
3.解决内存的不释放
ext的性能问题没有多少值得讨论的。

合理利用EXT的组件进行UI设计,因为EXT的不少效果的渲染在IE下性能非常低下,比如超过100行数据的默认grid的渲染,超过200个的column布局的堆砌(这半句我自己都看不懂),动画。。。

这些情况是属于极端的...
41 楼 icewubin 2008-11-25  
nihongye 写道
1.js压缩
2.抛弃iframe,避免了重复解析ext-all.js的开销(据说gzip+ie不会重复解析)
3.解决内存的不释放
ext的性能问题没有多少值得讨论的。

合理利用EXT的组件进行UI设计,因为EXT的不少效果的渲染在IE下性能非常低下,比如超过100行数据的默认grid的渲染,超过200个的column布局的堆砌(这半句我自己都看不懂),动画。。。
40 楼 nihongye 2008-11-24  
1.js压缩
2.抛弃iframe,避免了重复解析ext-all.js的开销(据说gzip+ie不会重复解析)
3.解决内存的不释放
ext的性能问题没有多少值得讨论的。
39 楼 kimmking 2008-11-24  
用了iframe又不autoload一定会慢很多。
解析ext-all对浏览器来说是个力气活
38 楼 icewubin 2008-11-24  
风花雪月饼 写道
126和163邮箱已经证明全AJAX应用会导致浏览器崩溃。。。


那是不是可以证明Gmail和Yahoo Mail的作者都来自火星?
37 楼 风花雪月饼 2008-11-24  
126和163邮箱已经证明全AJAX应用会导致浏览器崩溃。。。
36 楼 yourgame 2008-11-22  
zhongli 写道
生产采用的是apache的gzip压缩,好像可以达到80%,体积的问题应该很容易解决。
顺便问一下,如果不使用iframe,那是不是变成了one page application模式?这样好像不是很爽,多模块不一定都是用ext开发的

个人认为extjs这么华丽,你为什么不全部用它来开发呢?你用其他和他混用,感觉不良好
35 楼 kebo 2008-11-21  
那倒不是,主要是相互调用,通讯麻烦,parent啥的感觉依赖了页面结构。
34 楼 elstage 2008-11-21  
kebo 写道
压缩,考虑到的是网络速度的问题。如果网络不是问题,这块儿没什么用。
extjs使用的时候,就我们项目的经验。不要把继承层次弄的太深。我们项目是
坚决不用什么iframe的东西。jsvm2可以很好的做js的分割加载

用了iframe是不是一定就比不用慢呢?
33 楼 icewubin 2008-11-21  
zhongli 写道
通常一个简单的模块当作一个application.主界面调用的时候如果不用iframe那用什么调用呢?正如你说的,这个模块可能会是其他系统的,也可能会是非ext开发的

这个就复杂了,主要牵涉到两个问题。

1.页面布局,例如新浪或淘宝,不同模块这件对于用户来说没有直接的关系,也有可能是用iframe,也有可能就是各管各,完全通过页面重定向来切换模块。对于系统内部来说多半都是通过url和cookie来传递参数,比如淘宝和支付宝的页面切换时一定是带有参数的。

但是首页例外,首页往往会单独优化。

2.消息通讯,1里面提到了传递参数,通过URL跳转是最常见的一种方式,如果一定要在不同模块之间直接交互,而且有些子模块可能有些是异构的遗留系统,除了iframe我也想不出什么好办法。
32 楼 zhongli 2008-11-21  
icewubin 写道
zhongli 写道
生产采用的是apache的gzip压缩,好像可以达到80%,体积的问题应该很容易解决。
顺便问一下,如果不使用iframe,那是不是变成了one page application模式?这样好像不是很爽,多模块不一定都是用ext开发的

体积问题你说对了,也就是第一次访问需要下载112KB的ext-all.js的问题,大概相当于2-3幅大图片的大小。


一个application不等于一个网站,application的粒度需要自己把握。

多模块完全可以多page。

如果一定要多模块放在一个页面中,即使用iframe,多模块之间在客户端的通讯也是很麻烦的,建议大模块设计的时候就按照传统门户网站的策略,各自分开。比如门户的新闻页面往往基于各自的CMS系统,论坛有可能是PHP系统等等。

很荣幸又听到你的指教
通常一个简单的模块当作一个application.主界面调用的时候如果不用iframe那用什么调用呢?正如你说的,这个模块可能会是其他系统的,也可能会是非ext开发的
31 楼 elstage 2008-11-20  
客户端机器性能好一点的话还能忍受,如果客户端机器配置差那复杂页面显示就歇菜了
30 楼 jacky9692 2008-11-20  
elstage 写道
fins 写道

我觉得 不应该从js 体积上着手 那个不是最大的瓶颈 ext源码级别的优化 以及使用方式(你写的ext代码)上的优化 才是关键的 (个人观点 欢迎批驳 但我不做回应 )

你说的不错,问题是在写法优化上面有没有什么经验共享?


在完成了组件对象的使用以后必须回收,可以使用对应对象的destroy,beforeDestroy,removeAll等方法销毁对象以及一些孤立节点。
比如store使用后,可以使用它的removeAll方法销毁;form,grid等可以使用destroy销毁。。。

相关推荐

    ext5第一部分

    【标签】"ext6"表明可能是在讨论EXT5之后的潜在后续版本,尽管EXT5尚未正式发布。未来可能的EXT6将进一步优化上述特性,并可能引入新的特性和技术,如原生加密、更强大的文件系统一致性检查工具以及对新硬件存储技术...

    ext整理 ext整理 ext整理

    下面将详细讨论EXT的相关知识点。 一、EXT JS框架 EXT JS是一个基于JavaScript的开源框架,由Sencha公司开发。它的设计目标是为Web开发者提供一套完整的工具,用于创建功能丰富、用户界面美观的应用程序。EXT JS的...

    DB2 性能优化快速入门

    通过上述讨论可以看出,DB2性能优化涉及到多个层面的技术和策略。初学者可以通过理解和掌握内存、CPU和I/O等方面的基础知识,逐步建立起解决实际问题的能力。此外,利用成熟的DB2调优工具如DB2 Performance Expert也...

    Ext的压缩文件

    下面将详细讨论Ext框架以及3.0版本可能涉及的关键知识点。 1. **Ext JS**:Ext JS是一个开源的JavaScript库,由Sencha公司开发,用于构建桌面级的Web应用。它提供了丰富的用户界面组件和数据管理工具,如表格、面板...

    查看文件 ext资料

    博主可能还讨论了如何分析和优化ext文件系统的性能,例如调整文件系统参数,使用`tune2fs`工具进行调整,或者使用`ionice`来控制I/O调度优先级。 在Linux环境中,理解文件系统对于日常操作至关重要,无论是普通用户...

    Linux性能优化大师(包含azw3,epub,mobi)

    《Linux性能优化大师》是一本深受业界推崇的Linux系统调优专著,涵盖了广泛的Linux性能优化主题。本书针对系统管理员、开发人员以及对Linux性能有深入需求的技术人员,旨在提升他们在面对复杂系统环境时,对Linux...

    Ext JS高级程序设计

    第三章可能侧重于高级主题,如性能优化、扩展和插件开发,以及自定义组件。开发者会学习如何提高应用程序的性能,减少DOM操作和网络请求。此外,理解Ext JS的扩展机制有助于定制和增强现有的组件。这部分可能还涵盖...

    Ext4.1.0 Doc中文版

    - **块大小**:EXT4支持1K、2K和4K的块大小,根据文件大小分布选择合适的块大小可以优化性能。 5. **EXT4与其它文件系统比较** - **EXT3**:EXT4的前身,相比EXT4,EXT3的性能稍弱,但更保守稳定。 - **XFS**:...

    ext TREE

    【标签】"源码"和"工具"这两个标签暗示我们可能要讨论EXT JS Tree组件的实现原理和如何在项目中应用。EXT JS的源码是用JavaScript编写的,它采用了MVC(Model-View-Controller)架构模式,使得代码组织清晰,易于...

    EXT3.0中文文档

    7. **安全性**:讨论EXT3的权限模型、ACLs以及如何保护文件系统不受恶意攻击。 由于EXT3是开源的,文档可能还会包含源代码分析、开发接口(API)的详细说明,供开发者深入了解EXT3的工作原理并进行扩展或定制。通过...

    ext js 打包资源下载

    然而,需要注意的是,Ext JS 1.1.1是一个较旧的版本,相比当前的版本(例如7.x或8.x),可能缺少一些新特性、性能优化以及对现代浏览器的支持。尽管如此,对于那些需要兼容旧系统或者对版权有特定要求的项目,Ext JS...

    Ext2.02的一些总结

    现在,让我们详细讨论Ext JS 2.02的关键知识点: 1. **组件系统**:Ext JS的核心是其强大的组件模型,允许开发者创建可复用、可配置的UI元素。这包括表格、树、面板、窗口、表单等。2.02版本可能包含对这些组件的...

    EXT2.2开发环境

    8. **测试和优化**:不断测试应用的功能和性能,使用EXTJS提供的性能监控工具,如Profiler,来优化代码和组件。 在"学习教程it-teach.cn下面的最近技术-extjs.txt"文件中,可能包含了EXT2.2的详细教程和示例代码,...

    Ext4帮助文档

    9. **性能优化**:讨论如何通过配置文件系统参数(如块大小、Inode比例等)来提升读写性能,以及使用延迟分配(delayed allocation)、 extents等特性的影响。 10. **安全性和权限**:介绍Ext4的访问控制机制,包括...

    EXT_DEMO.rar_DEMO_ext desktop de_ext desktop demo_一起ext

    现在我们来详细讨论EXT桌面系统的一些关键知识点: 1. **组件化设计**:EXT桌面系统基于组件化的理念,这意味着你可以将应用拆分为多个独立的、可重用的部件,如面板、窗口、菜单等。这种设计模式便于维护和扩展...

    ext基础

    EXT文件系统的知识点包括它们的结构、性能特点、挂载选项、日志记录机制以及如何进行文件系统的检查、修复和优化。 EXT2是早期的无日志文件系统,EXT3引入了日志记录功能,增强了数据一致性,而EXT4则在EXT3的基础...

    Ext 3.0 中文文档

    10. **最佳实践和性能优化**:提供关于代码优化、资源管理等方面的指导,帮助开发者构建高效的应用程序。 11. **API参考**:详细列出Ext 3.0的所有类、方法、属性和事件,是开发者日常查阅的重要工具。 通过阅读...

    《Linux 性能优化实战》案例

    《Linux 性能优化实战》案例提供了丰富的经验与技术,帮助读者深入理解如何在Linux环境中提升系统的性能。这本书涵盖了一系列的实例,旨在帮助系统管理员、运维人员和开发人员解决实际工作中遇到的问题。以下是对该...

    EXT3.0 COOKBOOK中文版

    - **EXT3.0**: 更进一步地明确了本书讨论的是Ext JS 3.0版本。 - **javascript**: 表明Ext JS是一种基于JavaScript的前端开发框架。 #### 部分内容概述 - 本书由Jorge Ramon撰写,由Packt Publishing出版,版权信息...

Global site tag (gtag.js) - Google Analytics