2010-02-07 56 views
0

我们使用大输入表单和几个输入字段,并遇到性能问题。确切的问题是表单的呈现时间。需要几秒钟(4-10秒)才能显示表格。 我们使用多列布局和由json数据存储加载的〜30个组合字段和另外约10个输入字段。渲染过程非常缓慢,所以我可以看到窗体的对齐和显示过程。有什么方法可以加快显示过程吗?Extjs表单性能问题

+1

我必须问,无论如何30个组合字段有多可用?对于任何形式来说,这都是一大堆领域。 – Lloyd 2010-02-08 11:58:03

+0

是的,这是很多领域,但这样做是有道理的。 – Hubidubi 2010-02-09 11:10:49

回答

0

难道是由JSONStores加载的数据导致对齐更改?关闭所有JSONStore,然后测量渲染过程 - 您会发现浏览器需要相当长时间才能完成30个后端请求!

0

我也建议您的商店是问题。你尝试过FireFox吗?或者按照@JJ的建议,不要加载商店,看看会发生什么。我也会建议懒惰地呈现你的表格,但似乎你的问题涉及商店。

我在加载商店时(通常是花费大量时间的后端查询)看到了类似的缓慢。所以,我创建了一个AJAX调用来检索所有商店数据。在AJAX回调中,解析有效负载的内容并适当地分发给每个商店。

+0

我们使用Firefox + Firebug进行开发。我不认为最初的问题是json商店和请求(请参阅上面的我的回复)。我认为缓慢来自渲染和布局。它可以通过眼睛看出它试图对齐/调整窗体的各个部分以适合在一起。虽然我已经说过3.1版本解决了我们大部分的问题。 – Hubidubi 2010-02-09 11:16:36

1

尝试获得一个时隙的所有组合框的数据,然后使用store.load方法

0

加载数据,这可能有人会有所帮助:

我们有多个复选框和this后帮助我们同样的问题解决它。

每次,当Form或其他容器添加一个元素 - 它的布局重新计算。当存在很多元素时,这会导致渲染问题。

所以,你可以:

  1. 添加所有的孩子在一个时间:
container.add(panel, button, grid); 
  • 暂停布局重新计算:
  • container.suspendLayout = true; 
        addSomething(); 
        container.suspendLayout = false; 
        container.doLayout();