我們正在研究一個使用GXT的相當複雜的系統。儘管FF上的所有功能都很棒,但IE(特別是IE6)卻是另外一回事(瀏覽器呈現頁面之前,瀏覽時間超過10秒)。GXT性能問題
據我所知,其中一個主要原因是IE6下的災難性DOM操作(見http://www.quirksmode.org/dom/innerhtml.html)。
這可以被認爲是一個前端Javascript框架(即GWT)的通用問題,但是一個簡單的代碼(見下文),否則執行相同的功能證明。事實上,在IE6下 - getSomeGWT()需要400ms,而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;
}
所以要解決/減輕一個需要的問題 - 一個。減少DOM操作的數量;或 b。將它們替換爲innerHTML。 AFAIK,(a)僅僅是使用GXT的副作用,(b)只能用於GXT尚不支持的UiBinder。
任何想法?
在此先感謝!