我们正在使用 GXT 开发一个相当复杂的系统。虽然在 FF 上一切正常,但 IE(尤其是 IE6)却是另一回事(在浏览器呈现页面之前查看超过 10 秒)。
我知道主要原因之一是 DOM 操作,这在 IE6 下是一场灾难(请参阅http://www.quirksmode.org/dom/innerhtml.html)。
这可以被认为是前端 Javascript 框架(即 GWT)的一般问题,但是执行相同功能证明的简单代码(见下文)。事实上,在 IE6 下 - getSomeGWT() 需要 400 毫秒,而 getSomeGXT() 需要 4 秒。这是一个 x10 的因素,它对用户体验产生了巨大的影响!!!!
private HorizontalPanel getSomeGWT() {
HorizontalPanel pointsLogoPanel = new HorizontalPanel();
for (int i=0; i<350; i++) {
HorizontalPanel innerContainer = new HorizontalPanel();
innerContainer.add(new Label("some GWT text"));
pointsLogoPanel.add(innerContainer);
}
return pointsLogoPanel;
}
private LayoutContainer getSomeGXT() {
LayoutContainer pointsLogoPanel = new LayoutContainer();
pointsLogoPanel.setLayoutOnChange(true);
for (int i=0; i<350; i++) {
LayoutContainer innerContainer = new LayoutContainer();
innerContainer.add(new Text("just some text"));
pointsLogoPanel.add(innerContainer);
}
return pointsLogoPanel;
}
因此,要解决/缓解这个问题,我们需要 - a。减少 DOM 操作的次数;或 b。用 innerHTML 替换它们。
AFAIK,(a)只是使用 GXT 的副作用,(b)仅适用于 GXT 尚不支持的 UiBinder。
有任何想法吗?
提前致谢!