Eigenen Dojo Build für Zend_Dojo erstellen
Dienstag, 25.08.2009Wer immer sich intensiver mit Zend_Dojo und damit auch mit dem Dojo Toolkit auseinander setzt, kommt irgend wann an den Punkt, dass die Website einfach zu langsam geworden ist. Dies liegt daran, dass Dojo in sehr viele Dateien aufgesplittet ist, die beim Seitenaufbau erst einmal geladen werden müssen. Da dies bei einem Formular, welches viele verschiedene Dijits (so heissen die speziellen Formularelemente von Dojo) verwendet, kann der Seitenaufbau schon mal um mehrere Sekunden verzögert werden. Um dies zu optimieren, bietet Dojo ein spezielles Build-System, welches die Vielzahl von zu ladenden Dateien in einer Datei zusammen fügt und dann komprimiert. Dies beschleunigt den Seitenaufbau merklich.
Doch wie funktioniert dies nun mit der im Zend Framework enthaltenen Dojo Version. Als erstes musst du natürlich eine voll Zend Framework Version herunterladen (full package). Diese Datei entpackst du dann, z.B. ins Verzeichnis /home/zf/ZendFramework-1.9.2 oder so. Nun öffnest du unter Linux eine Konsole (unter Windows eine Eingabeaufforderung oder wie die Dinger heissen). Dort gibst du ein:
cd /home/zf/ZendFramework-1.9.2/externals/dojo/util/buildscripts
./build.sh profileFile=profiles/standard.profile.js action=clean,release version=1.3.1 releaseName=
Nun wird dein Build anhand des Standard Profils für dich automatisch erstellt. Es werden übrigens noch ein Dutzend weitere Profile bereit gestellt, die im Verzeichnis /home/zf/ZendFramework-1.9.2/externals/dojo/util/buildscripts/profiles zu finden sind. Du kannst aber auch eine eigene Profildatei erstellen, wenn du ans Finetuning gehen möchtest. Wenn das Gerödel fertig ist, findest du dein Build im Verzeichnis /home/zf/ZendFramework-1.9.2/externals/dojo/release. Dort sollten mindestens die drei Unterverzeichnisse dijit/, dojo/ und dojox/ enthalten sein. Diese drei Verzeichnisse kopierst du nun in das Verzeichnis /public/js deines Projektes. Wenn du vorher mit den Originaldateien (also ungepackt) gearbeitet hast, solltest du die vorhandenen Unterverzeichnisse erst einmal entfernen und danach deine Build-Verzeichnisse hinein kopieren. Das war schon die halbe Miete.
Das Einbinden erfolgt dann wie gewohnt in einem Layout- oder View-Skript:
if ($this->dojo()->isEnabled())
{
$this->dojo()->setLocalPath('/js/dojo/dojo.js');
$this->dojo()->addStyleSheetModule('dijit.themes.tundra');
echo $this->dojo();
}
Wenn du nun deine Seite neu aufrufst und durch die Formulare klickst, sollten diese deutlich schneller aufgebaut werden.
Ausprobieren! Und bei Fragen, unten sind die Kommentare!

