Blog-Optimierung mit jsmin, PHP Speedy und Zip-Handler
- Wordpress: Blogger Import
- Wordpress: Installation
- Bloggy Saturday: Sicherheit in Wordpress
- Wordpress: Permalinks-Wahn
- Wordpress: Database-Cleaning
- Fade to Black
- Wordpress 2.5 Update
- Wieder mal Wordpress-Plugins
- Pingbacks, Trackbacks und Kommentare
- Performance-Optimierung für den Blog
- Tausend und ein Beitrag
- Blog-Optimierung mit jsmin, PHP Speedy und Zip-Handler
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.
Nun 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.
-
php_flag output_buffering On
-
php_value output_handler ob_gzhandler
-
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..
- Aladin-Finale, Dottore und WM - 2008
- Eis, Medaillen und Konzert - 2007
- Extreme Lightwave und Dart - 2006
- Datum: 14. April 2009
- Kategorie: Medien, Offlinemedien
- Wortanzahl: 609 Wörter
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!
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.
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.
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.