Yui Compressor
Der YUI Compressor ist ein Projekt aus dem Hause Yahoo. Ziel des Projekt ist die Minimierung der Größe von Javascript – sowie CSS Dateien. Dazu werden komplexe Algorithmen verwendet, die dafür Sorge tragen, dass die Funktionalität des Quellcodes erhalten bleibt und trotzdem die Bytegröße der Dateien erheblich verkleinert wird. Die trivialsten Beispiele dafür wären das Entfernen von Kommentarzeilen sowie von Zeilenumbrüchen.
Die Minimierung der Dateigrößen resultiert in einer spürbaren Verbesserung der Performance für den Benutzer bei der Nutzung einer Webanwendung, da das vom Server zum Client übertragende Datenvolumen erheblich kleiner ist. Zu erwähnen ist noch, dass durch diverse Cache-Strategien des Browsers dieser Effekt nach dem einmaligen Download der Ressourcen drastisch reduziert wird. Die Entwickler von Yahoo haben allerdings statische Werte für die Nutzung ihrer eigenen Yahoo Homepage erhoben, die aufzeigen, dass jeder fünfte Nutzer mit einem geleerten Cache ihre Seite besucht. (Referenz: http://yuiblog.com/blog/2007/01/04/performance-research-part‑2/)
Die Dokumentation, Release Notes sowie die Software steht auf der Yahoo Developer Homepage zur Verfügung.
YUI Compressor Maven Mojo
Das Projekt YUI Compressor Maven Mojo ermöglicht es den YUI Compressor auf relativ einfache Weise in ein Maven Projekt zu integrieren. Des Weiteren erlaubt es Dateien zu Aggregationen zusammenzufassen, damit nicht nur die Größe von CSS – und Javascript Dateien gesenkt werden kann, sondern auch die Anzahl der Requests, die nötig sind um eine Webseite zu laden. Zusätzlich stellt es ein Goal zur Verfügung, mit dem Javascript Dateien per jslint auf deren Qualität hin anhand vordefinierter Merkmale ausgewertet werden können.
Damit das Maven Projekt, um diese neue Funktionalität erweitert werden kann, muss ein zusätzliches Plugin Tag in die pom.xml eingetragen werden.
<plugins> ... <plugin> <groupId>net.sf.alchim</groupId> <artifactId>yuicompressor-maven-plugin</artifactId> <executions> <execution> <goals> <goal>compress</goal> <!--<goal>jslint</goal>--> </goals> </execution> </executions> </plugin> ... </plugins>
Des Weiteren kann zusätzlich ein configuation Tag hinzugefügt werden, indem unterschiedlichste Konfigurationen vorgenommen werden können.
Beispielsweise ist es möglich genau festzulegen, welche Javascript – oder CSS Dateien minified (includes) bzw. nicht minified (excludes) werden sollen. Wildcards wie Sternchen bzw. Doppelsternchen können dabei problemlos verwendet werden. Außerdem können Aggregationen (aggregations) definiert werden, die mehrere Dateien zu einer einzigen zusammenführen. Quasi on the top wird die gzip Funktionalität, mit der Dateien gepackt werden können, zu Verfügung gestellt.
Die genaue Definitionen der Tags sowie die Vielfalt der Funktionen kann über die YUI Compressor Maven Mojo Homepage eingesehen werden.