对ExtJS4应用 性能优化的几点建议
ExtJS由于UI设计过去强悍,导致性能问题一直被大家诟病,不过到ExtJS4.1之后,性能问题相比以前的版本已有所改善,下面是官方文档给出的优化建议,李坏在此做个小小的总结,仅供大家参考。
(1)合理设置监听事件
事件监听是我们在性能优化时需要非常注意的一个部分。比如:数据集store的load事件,正常情况下,我们只需要在第一次加载数据的时候发起请求、获取数据;但是,如果我们监听设置不合理,可能会导致,当我们每次查看该页面的时候,都会触发load事件,加载同样的数据,如果数据量特别大,无疑给我们的性能带来很大的影响。为了解决这个问题,我们可以为该监听事件添加single:true配置项,代码如下:
1 |
listeners: { |
2 |
load: onFirstLoadData, |
3 |
single: true |
4 |
} |
另一个需要我们注意的事件是afterrender,这个事件在所有的DOM节点加载完毕后被触发。每当我们对页面中的元素做任何修改,都会触发该事件、重新渲染页面,这样必然影响我们应用的加载速度。未解决这个问题我们可以用beforerender代替,在ExtJS4.1版本以后我们也可以使用boxready代替该事件,具体使用方法请参考官方文档。
(2)杜绝doLayout和doComponentLayout的调用
从字面即可看出,这两个方法都是对页面重新进行布局,对整个应用的页面重新计算布局,其付出的性能代价是非常昂贵的,好在ExtJS4.1开始,我们基本可以不再使用这两个方法,这里提出,只是给新手童鞋们一个提醒,李坏在此不再做详细阐述。
(3)减少容器嵌套
简而言之,能用一层嵌套实现的绝不用两层嵌套,能用两层嵌套实现的绝不用三层嵌套… …因为每一层容器的初始化、渲染和加载都是需要大量时间的,所有我们应该在保证功能完整的基础上尽可能减少容器嵌套。例如:
1 |
{ |
2 |
id: 'container1' , |
3 |
items: [{ |
4 |
id: 'container2' , |
5 |
items: [{ |
6 |
id: 'component3' |
7 |
}] |
8 |
}] |
我们完全可以用下面的布局替代:
1 |
{ |
2 |
id: 'container1' , |
3 |
items: [{ |
4 |
id: 'component3' |
5 |
}] |
6 |
} |
(4)用container替代panel
当我们仅仅需要一个容器的时候,完全可以使用container替代panel(默认容器为panel),因为container是panel的基类,panel在功能上要比container强大的多,当然渲染一个panel消耗的性能也比container多很多,所以,如果可以,我们应该尽量使用container替代默认的panel。
1 |
{ |
2 |
xtype: 'container' , // 默认容器类型 'panel' |
3 |
items: [ ... ] |
4 |
} |
(5)减少border布局嵌套
每添加一层border布局嵌套,就要增加一次布局初始化、渲染和加载的时间,在ExtJS4.1以前的版本,同一个页面的布局中如果需要两个North区域,需要嵌套两层border布局,在ExtJS4.1中,这种恶心的布局方式已经一去不复返了,不管想要实现什么样的布局结构,一个border布局已完全可以实现了。
(6)减少对DOM的读、写操作
ExtJS官方在开发4.1版本时 ,已经尽可能减少布局时对DOM节点的读写操作,因为对DOM节点的操作会降低应用的速度,尤其是写操作,对性能的开销还是相当大的,所以我们在开发应用时,也应该尽可能减少这样的操作。比如,对节点样式的修改我们尽可能使用beforrender事件,在页面渲染前实现,而不是渲染后。
以上是ExtJS官方文档给出的几条优化建议,李坏认为,这些注意事项应该是我们在开发过程中就应该注意的,而不是开发完成后重新做优化,否则,带来的工作量是相当巨大的,李坏曾在此付出过惨重代价,在此提醒大家,希望对各位有所帮助!
对ExtJS4应用 性能优化的几点建议的更多相关文章
- jQuery性能优化的28个建议
我一直在寻找有关jQuery性能优化方面的小窍门,能让我那臃肿的动态网页应用变得轻便些.找了很多文章后,我决定将最好最常用的一些优化性能的建议列出来.我也做了一个jQuery性能优化的简明样式表,你可 ...
- Java内存优化和性能优化的几点建议
1.没有必要时请不用使用静态变量 使用Java的开发者都知道,当某个对象被定义为stataic变量所引用,这个对象所占有的内存将不会被回收.有时,开发者会将经常调用的对象或者变量定义为static,以 ...
- 关于java性能优化细节方面的建议
在Javva程序中,性能问题的大部分原因并不在于Java语言,而是程序本身,养成一个良好的编码习惯非常重要,能够显著地提升程序性能.下面来聊聊该方面的建议: 1.尽量在合适的场合使用单例: 所谓单例, ...
- Python性能优化的20条建议 (转载)
优化算法时间复杂度 算法的时间复杂度对程序的执行效率影响最大,在Python中可以通过选择合适的数据结构来优化时间复杂度,如list和set查找某一个元素的时间复杂度分别是O(n)和O(1).不同的场 ...
- python基础===Python性能优化的20条建议
优化算法时间复杂度 算法的时间复杂度对程序的执行效率影响最大,在Python中可以通过选择合适的数据结构来优化时间复杂度,如list和set查找某一个元素的时间复杂度分别是O(n)和O(1).不同的场 ...
- SQL性能优化的几点建议
1. 索引:索引可以提高查询的速度,但不是使用带有索引的字段查询时,索引都会起作用,如下几种特殊情况下,有可能使用带有索引的字段查询时,索引没有起作用:1)使用LIKE关键字的查询语句 如果匹配字符串 ...
- jquery性能优化的38个建议
一.注意定义jQuery变量的时候添加var关键字 这个不仅仅是jQuery,所有javascript开发过程中,都需要注意,请一定不要定义成如下: $loading = $('#loading'); ...
- jQuery性能优化的一些参考建议
JQ3.1 文档下载地址:https://pan.baidu.com/s/1c2vMQdy 一.注意定义jQuery变量的时候添加var关键字 这个不仅仅是JQ,在JS中都是必须的 二.如果有多个变量 ...
- Python性能优化的20条建议
优化算法时间复杂度 算法的时间复杂度对程序的执行效率影响最大,在Python中可以通过选择合适的数据结构来优化时间复杂度,如list和set查找某一个元素的时间复杂度分别是O(n)和O(1).不同的场 ...
随机推荐
- android 32 Gallery:横着滚动的列表
Gallery:横着滚动的列表 mainActivity.java package com.sxt.day05_01; import java.util.ArrayList; import java. ...
- android 30 下拉列表框:ArrayAdapter和Spinner.
package com.sxt.day05_04; import android.os.Bundle; import android.app.Activity; import android.cont ...
- Google Android开发入门与实战
http://www.pc6.com/softview/SoftView_58350.html
- syslog实例详解rsyslog
http://blog.csdn.net/chenhao112358/article/details/40892239http://www.cnblogs.com/blueswu/p/3564763. ...
- Android(java)学习笔记213:开源框架post和get方式提交数据(qq登录案例)
1.前面提到Http的get/post方式 . HttpClient方式,实际工作的时候不常用到,因为这些方式编写代码是很麻烦的 2.Android应用会经常使用http协议进行传输,网上会有很完善 ...
- 你的网站为什么会慢?——用YSlow为你的网站提速
在前面的文章我翻译的文章中分别从内容.服务器.JavaScript和CSS.图片.Coockies和移动应用等几个方面总结了34条提高网站性能的黄金守则,但是这些守则中,有一些是不常用到的,若非有实力 ...
- Usaco 2010 Dec Gold Exercise(奶牛健美操)
/*codevs 3279 二分+dfs贪心检验 堆版本 re一个 爆栈了*/ #include<cstdio> #include<queue> #include<cst ...
- Android开发手记(27) Java多线程的操作
Java中常用的有关线程的操作有,判断线程是否启动.线程强制执行.线程休眠.线程中断.线程让步.线程同步等.下面就一一举例. 首先,我们新建一个MyThread类实现Runnable接口.基于此接口进 ...
- java基础之反射机制
一.概念 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为jav ...
- C++最后课程项目总结
第一次独立完成的C++小项目,40小时 + 5小时Update + 8小时Linux移植. 过程: 过程非常认真,一个星期主要就是忙这个,为了完成某个部分,有时饭都推迟吃,连续对着电脑10几个小时很累 ...