Seiten-Ladezeiten optimieren – Teil 2: Komprimierung und Obfuscation
13.04.2007Nachdem ich mich im ersten Teil der Serie mit Markup im Allgemeinen beschäftigt habe, behandele ich heute einen Punkt, mit dem man bei der Geschwindigkeit des Seitenaufbaus wirklich etwas rausholen kann: Möglichkeiten, Dateien durch verschiedene Arten von Kompression und sog. Obfuscating zu verkleinern.
- ZIP-Kompression für HTTP Header verwenden
Zip Kompression für die HTTP-Übertragung beschleunigt den Aufbau von Webseiten teilweise sehr deutlich, ein entscheidender Faktor für den Erfolg einer Website. Dabei werden die Dateien mithilfe des Apache Moduls mod_deflate (früher mod_gzip) ZIP-komprimiert übertragen und erst vom Browser entpackt, was alle modernen Browser unterstützen. Wie sich das Modul auf einem eigenen Server schnell einrichten lässt, erklärt Howtoforge.
Falls die ausgelieferten HTML Dateien relativ groß sind (ab ca. 15KB), kann es aber zu einem psychologisch negativen Effekt kommen, denn die Seiten werden erst aufgebaut, wenn sie komplett übertragen sind. Wer mit dem Modem surft , sieht im Zweifel einige Sekunden eine weiße Seite. Wenn die Source-Files also sehr groß sind, dann sollte man die Kompression für diese Dateitypen(z.B. php, html) evtl. abstellen. Außerdem benötigt die Kompression CPU-Resourcen auf dem Server. Eine gute Richtlinie, wann man das Modul einsetzten sollte und wie man es weiter konfiguriert (z.B. für Benchmarks) findet ihr bei Forever For Now. - JavaScript Dateien verkleinern
In JavaScript-Dateien gibt es normalerweise eine Reihe von Kommentaren, Tabulatoren und Umbrüchen, die je nach Coding-Stil eine Menge Platz verbrauchen. Diese lassen sich aber mit einigen Tools einfach entfernen. Teilweise beherrschen diese auch sog. Obfuscating, d.h. wirkliches Verkürzen von Code durch Umschreiben (z.B. Verkürzung von Variablennamen…). Zu diesen Packern gehört z.B. der Kompressor des Dojoo Toolkits oder Dean Edward’s Packer , mit dem auch die komprimierte Version von jQuery erstellt wird. Er entfernt nicht nur Kommentare und unnötigen Whitespace, er obfuscated auch. Dadurch wird eine JS-Datei ganz schnell mal um 50 Prozent kleiner. Darüber hinaus existieren eine Reihe weiterer Versionen, mit der man die Kompression dynamish durchführen kann, z.B. vor dem Upload auf den Liveserver. Leider ließen sich einige meiner JS-Dateien nicht komprimieren, insbesondere Prototype zeigte sich hier relativ widerspenstig und funktionierte nicht mehr. Wie man diese Probleme im Zweifel lösen kann erklärt Andrew Dupont in Packaging Prototype. - Leerzeichen, Tabs und Zeilenumbrüche entfernen
Wer aus irgend einem Grund, die oben beschriebenen Packer-Tools oder mod_deflate nicht einsetzen kann, kann zumindest überflüssige Leerzeichen, Einrückungen und Zeilenumbrüche aus seinen Dateien entfernen, was je nach Coding-Stil die Dateigröße zum Teil noch einmal deutlich reduziert. Für die, die bereits mod_deflate und JS-Packer verwenden, bringt dieser Tipp nichts.