GWT-大桌负载在IE7/8上缓慢慢
-
24-10-2019 - |
题
我有一个没有分页的桌子,因此所有记录都需要用卷轴以一个大流程显示。使用Flex表相同。
Firefox在加载页面时没有大问题,它在90秒内加载了7000个记录。但是,即只有800张唱片!
我们的技术架构师建议将Celltable小部件与InnerHTML一起使用而不是成熟的小部件。
解决方案
GWT的网格和弹性源自标准的HTMLTable。基本上,每次插入表行时,IE都会尝试重新整个表格,以便桌子越长,回流的时间越长。因此,在大网格中性能很糟糕。
您最好使用Div元素和样式类似于桌子,行和单元格。
<div class="ftable">
<div class="ftbody">
<div class="frow">
<div class="fcell cell0">Hello</div>
<div class="fcell cell1">World</div>
</div>
</div>
</div>
插入新单元不会导致其他单元格divs回流,因此它更快。
单元格是内联的,因此它们向左漂浮。行和表 /部分是常规块Divs。您可以通过其他样式控制特定列的单元格的宽度。
例如
.ftbody {overflow-y:scroll; overflow-x:hidden; height: 120px; }
.fcell { display: inline; }
.cell0 { width: 80px; }
.cell1 { width: 120px; }
这也可以更轻松地进行修复标头 /可滚动内容之类的事情,因为您可以通过溢出滚动条指定身体为一定的高度。站点,例如 这个 可能会给您您可以使用的布局 /样式的想法。
其他优化将是如果您不需要小部件,则不使用小部件来表示细胞。如果您需要添加事件处理程序等,则小部件最有用,如果您不需要InnerHTML / Text属性注入文本或HTML的摘要。它减轻了内存足迹并加快了事件处理。
其他提示
如果您没有任何排序要求,我建议使用新的GWT 2.1.0 CellTable,应该足够快:
(这实际上可能与分类一起工作,我只是还没有弄清楚如何)
不隶属于 StackOverflow