Nous travaillons sur un système plutôt complexe utilisant GXT. Alors que tout fonctionne bien sur FF, IE (surtout IE6) est une histoire différente (en regardant plus de 10 secondes jusqu'à ce que le navigateur rend la page).Problèmes de performances GXT
Je comprends que l'une des principales raisons est la manipulation DOM qui est un désastre sous IE6 (Voir http://www.quirksmode.org/dom/innerhtml.html). Ceci peut être considéré comme un problème générique d'un framework Javascript frontal (c'est-à-dire GWT) mais un code simple (voir ci-dessous) qui exécute les mêmes preuves de fonctionnalité autrement. En fait, sous IE6 - getSomeGWT() prend 400ms alors que getSomeGXT() prend 4 secondes. C'est un facteur x10 qui en fait un énorme différent pour l'expérience utilisateur !!!
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;
}
Donc, pour résoudre/atténuer le problème il faudrait - a. Réduire le nombre de manipulations DOM; ou b. Remplacez-les par innerHTML. AFAIK, (a) est simplement un effet secondaire de l'utilisation de GXT et (b) n'est possible qu'avec UiBinder qui n'est pas encore supporté par GXT.
Des idées?
Merci d'avance!