我们要写一个内部的统计系统,上面要求用extjs开发前台。开发了一大半了,发现页面好卡,响应有点慢,特别是IE浏览器。请问这种大型项目用extjs来卡发是否还合适?项目大致规格:
1.项目中有11个实体。
2.项目合计拥有超过8类大功能项,每个大功能又有若干小功能,合计约50个功能。
3.实体与功能之间关系复杂,并不是每个实体都拥有每项功能。4.如果按照预期设计思路,最后估计会有很多很多很多个div块。
5.不到万不得已的时候不采用frame。请开发过类似系统的前辈指点一下,谢谢了!!!再顺便请教一下extjs开发这种项目的时候难道继续用一页式的设计?!PS:还需要考虑整个系统占用的内层。如果是frame或多浏览器窗口,那么要把这些内层合计。再PS:好尴尬,功能太多,实体、功能间的联系太复杂,设计困难 :(

解决方案 »

  1.   

    因为是内部使用的东西
    所以可以要求大家用google之类的浏览器至于具体开发 要看你的实际情况了
    反正尽量吧功能模块分开来 能做到分开维护 分开开发就算OK了extjs里面有个 EXT桌面演示 你可以参考下
      

  2.   

    嗯,谢谢两位前辈,再请问如何彻底清掉一个extjs的组建,new 一个tabPanel后,如何彻底清除这个tabPanel?调用tabPanel的destroy()后,这个tabPanel还有很多东西存在,页面上到是节点什么的都没有了。但是它的一些ext属性还在存在,比如items、layout等等,这些东西是否会提升内存占用率,是否会导致页面变卡?
      

  3.   

    内部的统计系统,性能问题可以稍微不严格一些 IE下慢也只是IE6下慢 6以上好多了~~~
    1、Ext的项目 首先要将库文件不相关的文件都cut掉 只保留相关文件
    2、对我们自己写的js文件的引用需要动态加载 万不可一律引到首页中加载
    3、实体与功能关系复杂也没关系 Ext搞的定的 关键是你如何去规划
    4、注意js编码的性能优化
    5、内存的占用得看你是否有变量或对象未及时的释放以及逻辑上导致的内存泄漏
      

  4.   

    JS开发,最重要的就是要及时释放对象。
    如果你打开的页面对象实在太多,又没有办法先关闭一些的话,就只好修改设计了。如果你的系统在开始打开页面时运行速度还可以,只是越用越慢的话,估计就是发生了JS的内存泄漏,请检查代码,是否在哪些地方创建了对象,没有及时从dom树上删除。
    当然以前我在用ext时发现ext本身的代码就有不少内存泄漏,由于很久没再用ext了,所以新版本中是否还存在内存泄漏,就不清楚了。如果你的系统在初次打开页面时就已经很慢了,那估计就是你们的页面创建的对象实在太多了,可以试着修改下设计,在一个页面中少创建几个对象。另外,可以试着和客户沟通下,用IE8会比IE6快N倍。
      

  5.   

    谢谢各位前辈,因为是内部使用,所以关于加载js没什么问题,与网速相关的都不用考虑。现在的问题是页面中响应有些卡,谷歌和火狐影响不大,就IE太卡,有些面板比较复杂。
      

  6.   

    IE太卡,是因为ie解析渲染慢,
    既然面板比较复杂,就应该考虑错对js的一些优化,或者是对UI设计进行改进和简化,
    页面中响应有些卡是不是pc内存不足?甚至是内存泄漏.
    extjs的js代码优化的前后执行效果是比较明显的,千万不要把所有的东西都缓存了,
    能fly的就不要get,切记,否则用着用着就ie就挂掉了!
    就你这个系统用extjs是完全没问题的!
      

  7.   

    如果你用的是extjs4.0,你还会发现更多问题
      

  8.   

    不知道楼主所说的大型项目有多大。
    感觉只要是局域网内使用的项目用Ext基本没什么问题。。
    我公司现在开发的服装ERP系统 所有的功能都是在一个页面里面实现的。
      

  9.   

    太感谢各位前辈了。这是一个县级电力公司的电能信息计量系统,也不知道算不算大。
    内存泄漏好像有点,不过很微小,基本可以忽略。
    请问不要把所有东西都缓存指的是什么?还请多多指点一下(有心的前辈请帮忙看看)。现在的做法是:
    1.每类实体都有一个面板,包含该实体可以操作的所有功能(用户点击关心的实体时所有信息都能查到)。
    2.每个功能都有一个面板(用户只操作关心的功能,根据导航树查看该功能可统计的实体信息)。
    3.有些实体的功能面板和功能面板配置相似,抽象出了很多"组件"。
    4.第一次加载时就把所有面板都加载了(不考虑文件及网速的影响)。
    5.组件都按extjs的组件生命周期来写。
    6.实体面板是一个不含可关闭面板的tabpanel(不含增减面板功能);功能面板基本都是button配合cardPanel(每个cardPanel都是一个container或一个tabpanel,tabpanel不含可关闭面板,没有增减面板功能)。
    7.panel和window有,但是非常少;每类实体有一个form;很多功能(直接操作数据的功能)都是一个grid+一个svg(用于画图,有些功能没有);少量功能比较复杂,包含多个grid,grid之间有联系。
    8.对于常用数据,比如导航树是第一次加载时就把树对象(不是treepanel对象,只是单纯的树数据)加载,然后根据功能面板是否需要树,需要什么样的树从这个树对象中获取对应的树(换言之,有很多个treePanel)。问题:有些时候切换一个tabpanel稍稍有点卡,而一些toolbar中的field就非常卡,特别是的Ext.form.TriggerField及它的子组件实例(下拉框)求优化方向~~~~~好人一生平安PS:有个老师说,web就要做的像一个web,不要像系统,这让我感到很尴尬……