Wordpress Onkel Andys Tagebuch|Filme |Spiele|Fotos
 

Blog-Optimierung mit jsmin, PHP Speedy und Zip-Handler

14. April 2009, 160 Mal gelesen.
 
Dieser Beitrag ist der 12. von 12 in der Serie Blogging
 

Im Zuge meiner Umbauarbeiten habe ich nun endlich wieder mal meinen Blog optimiert. Ich hatte mich ja mal sehr intensiv mit dem Thema Blogoptimierung beschäftigt, konnte aber einige Ansätze auf Grund von Kompatibilitätsproblemen nicht mehr einpflegen. Mit Wordpress 2.8 sollte eigentlich alles besser werden. Hier scheinen die wichtigsten Operationen bereits integriert zu sein: concentrate, minify, gzip. Also habe ich gleich mal den aktuellsten Build online gestellt und mich nur geärgert. Trotz ewigem Rumprobieren brachte ich die Sache nicht wirklich zum Laufen. Ständig gab es Konflikte zwischen jquery und prototype. Offensichtlich funktionierte der Script-Loader nicht so wie er sollte und ich konnte den Blog schlichtweg nicht mehr gebrauchen. Der Höhepunkt war dann, dass ich nach dem Downgrade einige Rechte nicht mehr hatte. Ich war zwar als Admin gekennzeichnet, konnte aber nichts mehr löschen oder installieren. Wie nervig. Nach einer halben Ewigkeit kam ich dann auf die Idee, ein altes Datenbank-Backup zu laden. Siehe da, es hat alles wieder so funktioniert wie es sollte. Der Trick war dann, nur die aktualisierten Tabellen mit den Blogeinträgen zu exportieren und dann in die alte Datenbank reinzuladen. Das hat Gott sei Dank auch alles wunderbar funktioniert und somit kann ich den Blog wieder in vollem Umfang nutzen. Somit hat sicher wieder mal herausgestellt, dass regelmäßige Backups mit Hilfe des Databasemanager Plugins echt Gold wert sein können.

FirebugNun stand ich also nach einiger Zeit wieder genau am gleichen Punkt. Der Blog lief zwar, das PHP Speedy Plugin verrichtete seine Arbeit aber weiterhin nicht mehr so wie es eigentlich sollte. Das Packen von Files führte ständig zu einer leeren Seite beim Aufruf des Blogs und auch das Minifying der Javascriptdateien machte große Probleme. Aber genau diese zwei Features sind ja eigentlich die Essenz des Plugins. Nach einer erneuten Recherche ist es nun endlich soweit. Meine Javascripte und CSS-Files werden Dank PHP Speedy zu einer Datei zusammengefasst und nun auch endlich von sinnlosen Whitespaces befreit. Dafür war es aber notwendig, die jsmin-Datei im Pluginordner durch die aktuellste Version zu ersetzen. Volltreffer. Mit dem Packen der Daten hatte ich aber weiterhin meine Mühe. Weder die Funktion des Plugins noch irgendwelche deflate-Einträge in der htaccess-Datei führten zum gewünschten Ergebnis. Es gäbe zwar auch ein eigenes gzip-Modul, doch scheint das auf dem Server nicht installiert zu sein. Des Rätsels Lösung sind folgende drei Zeilen in der htaccess-Datei, die den ob_gzhandler für sämtliche Transfers aktiviert. Dadurch werden nicht nur js und css Files (die Dank PHP Speedy schließlich als php-Files vorliegen) gezippt, sondern auch die php-Seiten selbst. Perfekt.

  1. php_flag output_buffering On
  2. php_value output_handler ob_gzhandler
  3. php_flag zlib.output_compression Off

Ich entdeckte dann mit Hilfe von YSlow bzw. Firebug, dass manche Bilddateien unnötig groß sind. So benötigten drei kleine png-Files satte 75KB, was natürlich für völlig unnötige Ladezeiten sorgte. Es empfiehlt sich also auf jeden Fall, nach übermäßig großen Dateien Ausschau zu halten. Nach Öffnen der entsprechenden Files des d13slideshow-Plugins stellte sich heraus, dass irgendwelche Zusatztags für den Dreamweaver zu den absurden Dateigrößen beigetragen haben. Nach dem Neuspeichern in Photoshop benötigen die Files nun gerade mal 2 Kilobyte. Riesenunterschied also. Schließlich müsste man zum weiteren Optimieren noch die ETags loswerden sowie den Browsercache optimal nutzen. Dazu ist es wichtig, den Expires-Wert insbesondere von Bildern in die weite Zukunft zu setzen, sodass die Datei nicht jedes Mal neu heruntergeladen, sondern aus dem Cache gezogen wird. Auch hier hatte ich einige verschiedene Ansätze gefunden, die aber allesamt den Zugriff auf die Dateien blockierte. Ergebnis war ein Apache Error, was natürlich nicht ganz Ziel und Zweck der Aktion war. Die Lösung hatte ich allerdings ohnehin schon mal hier im Blog unter dem Titel Blog Optimierung gepostet. Keine Ahnung, warum ich diese Zeilen wieder raus genommen habe, jetzt sind sie jedenfalls wieder drin.

Vor Jahr und Tag..

Series Navigation«Tausend und ein Beitrag
 

4 Kommentare für “Blog-Optimierung mit jsmin, PHP Speedy und Zip-Handler”

  1. BTTV sagt:

    Also ich hab die htaccess wie folgt zum Laufen bekommen:

    # Aktivierung PHP5 bei 1und1
    AddType x-mapp-php5 .php
    AddHandler x-mapp-php5 .php

    # BEGIN WordPress

    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

    # END WordPress

    # Aktivierung GZIP-Handler

    php_flag output_buffering On
    php_value output_handler ob_gzhandler
    php_flag zlib.output_compression Off

    Nur hat der Test der PHP Speedy weiterhin nur einen Fehler in der jsmin.php ausgeworfen. Unter http://lars-schenk.com/http-komprimierung-ohne-mod_gzip habe ich nun eine elegante Lösung ganz ohne Plugins gefunden und bin damit soweit glücklich.

    Danke für die schnelle Antwort!

    • onkelandy sagt:

      Danke für die Info.. aber ist die Vorgehensweise auf dem Link nicht exakt dieselbe wie ich beschrieben habe? PHP Speedy wird halt benötigt, um JS und CSS-Dateien in eine einzige Datei zu stecken, was nicht nur den Vorteil der Komprimierbarkeit durch den PHP Zip-Handler hat, sondern auch für deutlich weniger Requests sorgt. Die Test-Seite von PHP Speedy kann man getrost ignorieren, die funktioniert bei mir auch nicht. Die Seite aber schon ;) Zumindest nach Ersetzen der jsmin-Datei.

  2. BTTV sagt:

    Sehr interessanter Artikel! Nur irgendwie bekomme ich die .htaccess nicht hin. Diese sieht bei meiner Wordpress-Installation und Aktivierung von PHP5 wie folgt aus:

    AddType x-mapp-php5 .php
    AddHandler x-mapp-php5 .php

    # BEGIN WordPress

    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

    # END WordPress

    Nur wie bekomme ich da noch die obigen Zeilen

    php_flag output_buffering On
    php_value output_handler ob_gzhandler
    php_flag zlib.output_compression Off

    unter? Ich hab mich schon alles ausprobiert und beim Googlen leider nichts brauchbares gefunden.

    • onkelandy sagt:

      Hi!
      An und für sich müsste man die drei Zeilen einfach nur ganz oben in der htaccess im root-Verzeichnis von Wordpress einfügen. Das Ganze innerhalb von #BEGIN und #END wird von Wordpress evtl. überschrieben, wenn man hier Einstellungen ändert, drum sollten die eigenen Ergänzungen außerhalb dieses Bereichs liegen. Gepackt werden nur php-Dateien! Wenn man das PHP Speedy-Plugin nutzt, werden aber automatisch alle JS-Dateien in einer PHP-Datei zusammen gefasst und somit funktioniert das Ganze dann auch wie es soll. Viel Glück.

 

Kommentiere