Czasami aplikacje GWT mają za duży rozmiar, potrafią się roztyć do ponad 300KB, co dla niektórych użytkonwników może być mało atrakcyjne. Na szczęście jest kilka sposobów, żeby zmniejszyć rozmiar wygenerowanego javascriptu. Pierwsza technika to prostu dieta cud rodem z telezakupów i daje super efekty. Wowawiwa!
Włącz kompresję na serwerze (zmniejszenie aplikacji nawet o 70%)
Można zmusić serwer, żeby kompresował niektóre pliki, o które prosi przeglądarka. Jeśli włączysz pakowanie gzipem dla plików javascript, html i css, to zobaczysz, że zmiana rozmiaru będzie naprawdę niezła. Jeśli Twoja aplikacja znajduje się na:
- serwerze Apache, to przeczytaj to.
- użytkownikcy serwera Tomcat powinni otworzyć plik server.xml, znaleźć element o nazwie "connector" i dodać atrybut: Compression="on".
- użytkownicy AS Jboss także muszą zmienić plik server.xml, który znajduje się w katalogu JBOSS_HOME\server\default\deploy\jboss-web.deployer. W tym przypadku należy również znaleźć element "Connector" i dodać atrybut compression="force".
<Connector port="8080" address="${jboss.bind.address}"
maxThreads="250" maxHttpHeaderSize="8192" emptySessionPath="true" protocol="HTTP/1.1"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"
compression="force"/>
UWAGA! Nie wszystkie przeglądarki obsługują kompresję! Te przeglądarki, z którym kompatybilne jest GWT, obsługują kompresję.
Kompilacja w trybie "obfuscated"
Kompilator GWT używa prostych i krótkich nazw zmiennych, co w globalnej skali znacznie zmniejsza rozmiar kodu. Dodatkowym pozytywnym efektem ubocznym jest znaczne utrudnienie kradzieży naszego kodu.
Używanie konkretnych Implementacji zamiast Interface'ów
Np. Lepiej użyć ArrayList zamiast zwykłej Listy, wówczas kompilator nie musi przygotowywać kodu obsługującego wszystkie możliwe implementacje interfesu List. O tej metodzie dowiedziałem się z bardzo ciekawej prezentacji Ray'a Rayan'a przedstawionej na konferencji Google I/O.
Dzielenie kodu
Jeśli dojdziemy do kresu naszych możlwości w zmniejszaniu naszej aplikacji, to możemy spróbować podzielić aplikację na moduły, które będą ładowane w sposób leniwy. Tutaj można o tym przeczytać. Nie jest to łatwe zadanie, rzekłbym nawet, że jest to rodzaj sztuki.
Stosowanie wiecznego cache'owanie i używanie "Image bundles"
Te techniki są opisane w tym artykule napisanym przez Ryan'a Dewsbury.
Jeśli znasz jakieś inne sposoby na zmniejszanie aplikacji GWT, to podziel się nimi z nami.




