Artikel vom 31. März 2008

wpCompressor: Plugin für die Komprimierung der Beiträge in WordPress

In der aktuell veröffentlichten Version 2.5 fehlt WordPress die bekannte Option, Seitenausgabe im gzip-Verfahren komprimiert an den Browser zu senden. Diese sinnvolle und praktische Einstellung wurde von Bloggern gerne in Anspruch genommen und ist beim Vorgänger unter Leseeinstellungen zu finden. Frisch entwickeltes Plugin wpCompressor übernimmt die Komprimierung der ausgelieferten Beiträge und ist schnell installiert.

Aus unerklärlichen Gründen hat sich das Entwickler-Team von WordPress gegen eine Komprimierungsfunktion im Kern der Software entschieden – aus der Vergangenheit sind Probleme im Zusammenspiel mit TinyMCE, dem in die Benutzeroberfläche integrierten Rich Text Editor, bekannt. Seit dem Release 2.5 bleibt es nun dem Betreiber des Blogs überlassen, mit welchen Methoden er die Inhalte komprimiert – vorausgesetzt, er hält diese Technik der Datenverkleinerung für sinnvoll.

Gzip-Komprimierung der Blogseiten
Gzip-Komprimierung der Blogseiten

PHP-Script als WordPress-Erweiterung
Der empfohlene Weg: Die Kompression des Outputs dem Server bzw. Apache zu überlassen. Doch nicht jeder ist in der Lage die Konfiguration des Servers wie gewünscht zu erweitern. Sehr oft fehlen dafür auch die notwendigen Privilegien – der Hoster schränkt diese ein. Als alternativer Ansatz kümmert sich ein PHP-Script um die Verdichtung der Bytes vor der Ausgabe und somit um zügigere Übertragung der Daten an den heimischen Browser. Und genau diese Aufgabe übernimmt die WordPress-Erweiterung wpCompressor und stopft die entstandene Lücke.

Sprungmarken

Features

Versionsverlauf
Version 0.3 vom 04.05.2008

Version 0.2 vom 01.04.2008

Version 0.1 vom 31.03.2008

Installation

Download
› WordPress Plugin wpCompressor ↓

Sergej Müller

[Der Autor] Sergej Müller ist enthusiastischer Software Engineer mit Schwerpunkten Webentwicklung und WordPress. Seit 2007 programmiert und vertreibt er wpSEO, das weltberühmte und patentierte SEO-Plugin für WordPress-Blogs.

46 Kommentare zum Artikel

#1 Frank am 3. April 2008 um 07:22

sehr schöne Idee und Lösung.

Kleine Anmerkung, weil du es erwünschst: Die Funktion auslagern und add_action abfragen. Eventuell würde ich noch prüfen, ob die gzip-Funktion von WP vorhanden ist, falls es wieder rein kommt und man das Deaktivieren vergisst. Aber nur als i-Tüpfelchen.

#2 Sergej Müller am 3. April 2008 um 08:59

Danke fürs Feedback, Frank.

Die Funktion könnte man auslagern, aber so ist es schön in einem Funktionsaufruf verpackt (create_function ist seit PHP 5 rasant).

Wenn die Komprimierung wieder reinkommt und der Nutzer diese aktiviert, so sollte die Abfrage ob_get_length dies erkennen und die Kompression durch das Plugin unterbinden.

Sergej Müller
#3 Frank am 3. April 2008 um 15:04

seit PHP 5 rasant klingt gut und muss ich mir merken.
Danke für die Aufklärung und wieder lernt man dazu.

#4 Frank am 3. April 2008 um 16:01

vielleicht interessant: http://comox.textdrive.com/pipermail/wp-testers/2008-March/007035.html

#5 Sergej Müller am 3. April 2008 um 16:09

Merci für den Hinweis.
Ich bin auch der Meinung, dass die Kompression dem Server überlassen werden soll: Apache macht es deutlich performanter. Aber wie ich im Artikel oben schrieb, gibt es Hosting-Pakete mit eingeschränktem Zugriff auf Servereinstellungen – da ist das Plugin dran und bringt WordPress die Komprimierung wieder bei.

Sergej Müller
#6 Frank am 3. April 2008 um 19:56

meine aktuelle index.php im root:
<?php
/* Short and sweet */

define(‘WP_USE_THEMES’, true);
ob_start(‘ob_gzhandler’);
require(‘./wp-blog-header.php’);
ob_end_flush();
?>

Was hälst du davon. Messe mit YSlow Empty Cache - 40K und Primed Cache - 30K gegenüber der Standard-index.php

Mit dieser Lösung bekomme ich auf einfache weise einen Geschwindigkeitsschub.
Was das Plugin nicht überflüssig macht, nur mal als Idee.

#7 Sergej Müller am 3. April 2008 um 20:10

Ich bin großer Freund vom Caching – ich cache alles mögliche und überall. Schau, hier im Blog kommen sogar CSS- und JavaScript-Dateien komprimiert beim Browser an.

Deine Lösung ist gut, aber wie du schon heute sagtest, in Form eines Plugins sind solche Ansätze besser aufgehoben. Achja, in meinem Plugin kann ebenfalls die Stufe der Komprimierung eingestellt werden – da spielt man idealerweise ein wenig mit dem Wert (Zeit für Komprimierung gegen Ausgabegröße -> 6 ist in den meisten Fällen die goldene Mitte).

Sergej Müller
#8 Frank am 3. April 2008 um 20:16

erzeugst du die Komprimierung schon als Ablage, oder dynamisch, wenn es geladen wird?
Ich hatte bisher CSS nicht komprimiert um schnell via WP im Editor zugreifen zu können.

#9 Sergej Müller am 3. April 2008 um 20:26

Bei meinen Projekten werden 2 Arten an Komprimierung angewendet:

  • Nach der Fertigstellung des Projekts werden JS- und CSS manuell durch den JavaScript-Compressor gejagt. Das Original bleibt natürlich für weitere Anpassungen unberührt. Könnte man auch dynamisch beim Laden der Dateien erledigen, kostet aber Zeit und Server-Performance.
  • Zunächst kommt die automatische gzip-Kompression, die ich in der .htaccess veranlasse (für Apache 2):
    <FilesMatch "\.(js|css)$">
      SetOutputFilter DEFLATE
    </FilesMatch>
    
Sergej Müller
#10 Frank am 3. April 2008 um 20:41

Ich hatte mit folgendem Syntax gespielt, aber nicht wirklich Verbesserungen gemessen.

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP:Accept-Encoding} .*gzip.*
RewriteRule ^js/(.*)\.js$ /js/$1.js.gz [L]
RewriteRule ^/(.*)\.css$ /$1.css.gz [L]
AddEncoding x-gzip text.gz

Dein obiger Code ist in der .htaccess des root?

#11 Sergej Müller am 3. April 2008 um 20:49

Ja, im Root-Verzeichnis. Eine einwandfreie Funktionalität hängt von vielen Faktoren ab, z.B. das Modul (DEFLATE aus meinem Beispiel) muss auf dem Server installiert sein; auch .htaccess muss solche Befehle absetzen dürfen, im anderen Fall werden diese ignoriert.

Dazu findet man im Netz ganze Menge, abhängig von der jeweiligen Serverkonfiguration.

Sergej Müller
#12 Frank am 3. April 2008 um 20:53

Danke !

Ich habe verschieden Wege mal zum Testen durchgespielt, Plugins etc. und gemessen mit YSlow. Fazit: Handarbeit ist die beste Methode, was du mir also bestätigst. Es ist wie mit vielen Themen, die Arbeit kann man doch nicht auslagern ;-) .

#13 Sergej Müller am 3. April 2008 um 21:03

Sonst hätten wir Entwickler nichts zu tun :)

Sergej Müller
#14 Manuel am 4. Mai 2008 um 11:44

Tja… es funktionierte eine Zeit lang gut bis es dann auf einmal den WYSIWYG-Editor blockierte :/

#15 Sergej Müller am 4. Mai 2008 um 18:34

Auf einmal :)
Lass mich raten, nach der Aktualisierung auf WP 2.5.1?

Sergej Müller
#16 Manuel am 4. Mai 2008 um 18:38

Nein

#17 Sergej Müller am 4. Mai 2008 um 18:44

Den WYSIWYG-Editor im Admin-Bereich oder? Denn das kann eigentlich nicht sein, da seit der Version 0.2 werden die Seiten aus der Area übersprungen…

Sergej Müller
#18 Manuel am 4. Mai 2008 um 19:13

Geht trotzdem nicht..
habs nochmal runtergeladen und aktiviert -> nur HTML-Editor möglich :(

#19 Sergej Müller am 4. Mai 2008 um 19:33

Habe das Plugin erweitert, lade noch mal runter und berichte bitte.

Sergej Müller
#20 Manuel am 4. Mai 2008 um 19:54

Funktioniert, danke :D

#21 Sergej Müller am 5. Mai 2008 um 12:38

Version 0.3 des Plugins ist nun offiziell online. Danke an Manuel für den Fehlerhinweis.

Sergej Müller
#22 Manuel am 5. Mai 2008 um 16:24

kein problem
übrigens, wie kann ich nachprüfen das es funktioniert (siehe dein screen wo da gzip steht)

#23 Sergej Müller am 5. Mai 2008 um 19:09

Mit Firebug, Safari oder Online: http://www.gidnetwork.com/tools/gzip-test.php

Sergej Müller
#24 Dieter am 21. März 2009 um 19:01

Noch ein sehr hilfreiches WordPress-Plugin. Danke dafür!

#25 Klaus am 23. April 2009 um 07:22

Plugin installiert und aktiviert. Gzip Test Tool zeigt jedoch keine Kompremierung an. Wo kann ich Fehlersuche betreiben?

#26 Sergej Müller am 23. April 2009 um 07:33

Das kann natürlich sein, dass dein Hoster keine Setzung von Werten mittels “ini_set” erlaubt.

Sergej Müller
#27 Chris am 26. April 2009 um 22:09

Bei aktiviertem Plugin schmeisst Windows Live Writer zumindest bei mir reproduzierbar den Fehler: “Invalid response document returned from XmlRpc Server”. Compress deaktiviert und es geht wieder. Any ideas?

#28 Sergej Müller am 26. April 2009 um 22:48

Windows Live Writer ist mir leider kein Begriff. Seit WordPress 2.5 läuft das Plugin auf jeder nur erdenklichen WordPress-Installation problemlos. Aber ist das komische Tool nicht dafür da, um als Administrator Beiträge zu verfassen? Denn eine Ausnahmeregel ist implementiert, die das Plugin nur im Nicht-Admin-Zustand ausführen lässt.

Sergej Müller
#29 Chris am 26. April 2009 um 22:56

Ah, das wird es sein, danke für die Erklärung, das macht natürlich Sinn. Live Writer ist übrigens eines der beliebtesten Desktop-Blogging Tools unter Windows und das sag ich jetzt mal völlig wertfrei ;)

#30 funkygog am 12. Dezember 2009 um 22:25

Hallo Sergej,
habe das Plug-In installiert (und auch aktiviert)
Finde aber nicht den Dialog für die manuelle Anpassung der Komprimierungsstufe. Ist der Dialog in v0.3 noch vorhanden – oder gucke ich nicht richtig?

#31 Sergej Müller am 13. Dezember 2009 um 10:18

@funkygog
Das geht zurzeit nur direkt im Quelltext des Plugins in der Zeile mit ini_set(“zlib.output_compression_level”, 6);. In der kommenden Version will ich diese Einstellung in die GUI rausholen.

Sergej Müller
#32 Stefan B. am 13. Dezember 2009 um 11:47

Hallo Sergej,
ich habe den code oben in meine HTACCESS Datei eingetragen. Aber keine Änderung erfahren. Wie kann ich herausbekommen ob der Eintrag in der htaccess datei überhault ausgeführt und akzeptiert wird.

Übrigens: Trage ich den code ohne eine entsprechende if abfrage ( ) ein, gibt es eine Fehlermeldugn und die Webseit ist nicht erreichbar.

#33 funkygog am 13. Dezember 2009 um 13:08

Danke Sergej,
der Screenshot oben hat mich in die Irre geführt.
Eigentlich wollte ich nur den Wert auf 6 setzen – aber der ist ja schon so
voreingestellt.

#34 Sergej Müller am 13. Dezember 2009 um 13:14

@funkygog
Ja, eine Sechs ist genau der richtige Wert und eine goldene Mitte zwischen der Komprimierung und der Serverauslastung.

@Stefan B.
Das sieht man im Browser wie Safari, im Firebug oder auf dieser Webseite.

Sergej Müller
#35 René am 18. Januar 2010 um 12:18

Hey, ich nutze das Plugin schon eine Weile und habe jetzt mal meine Seiten durchgetestet.
Mit wurde auf http://j.mp/VRhnr immer angezeigt, dass gzip nicht aktiv bzw. nicht "compressed" ist, dann habe ich testweise mal dieses Plugin installiert http://j.mp/6J6aoF und es wurde angezeigt, dass gzip aktiviert ist.

Klappt da etwas mit einem Plugin nicht oder habe ich irgendwo einen Fehler gemacht?

#36 Sergej Müller am 18. Januar 2010 um 12:27

Naja, im Raten bin ich echt schlecht, denn weder kenne ich deine Plugins, noch ist mir irgendeine Inkompatibilität bekannt. Am besten schaust du mit Firebug oder ähnlichen Tools. Sonst kann ich das auch für dich machen. Sag Bescheid, wenn du mein Plugin aktiviert hast, dann gebe ich dir gerne Feedback.

Sergej Müller
#37 René am 18. Januar 2010 um 12:31

Hab dein Plugin aktiviert, wenn du mal schauen könntest wäre super. http://j.mp/14rtrc

#38 Sergej Müller am 18. Januar 2010 um 12:44

In der Tat, da wird nichts komprimiert. Ich muss aber auch sagen, dass mein Plugin deutlich strikter mit den Server-Einstellungen umgeht. Das kann schon sein, dass eine vom Server festgelegte Direktive vom Plugin nicht verwendet werden kann – ich denke dabei an die Komprimierungsstufe, die man im Plugin feiner und ausgewogener anpassen kann.

Aber wenn die andere Lösung das gewünschte Resultat ergibt (auch wenn ohne Komprimierungsgrad), dann bleib doch dabei. Der Weg nach Rom ist in diesem Fall nicht relevant.

Sergej Müller
#39 René am 18. Januar 2010 um 13:18

Danke erstmal. [...] jetzt weiß ich natürlich nicht, ob das überhaupt etwas bringt, zumindest im Ladezeit-Check sehe ich keinen Unterschied.

#40 Sergej Müller am 18. Januar 2010 um 13:28

Ich sagte ja, der Weg ist gleich – ob über das eine oder das andere Plugin. Auch meine Empfehlung “Firebug” ist nicht umsonst – da siehst du auch die komprimierte Größe, die tatsächlich über die Leitung geht.

Sergej Müller
#41 René am 18. Januar 2010 um 13:42

Danke für deine Tipps, Firebug deprimiert mich so, habe einfach zu viel Javascripts, etc. :D

#42 Sergej Müller am 18. Januar 2010 um 13:43

René, dann ist mein Artikel JavaScript-Dateien mit Google bündeln genau richtig für dich ;)

Sergej Müller
#43 Bichareh am 25. Januar 2010 um 10:09

Wäre es nicht gut mit dem Plugin auch noch CSS und Scripte komprimieren bzw. die CSS zusammenfassen zu können?
Gibt ja solche Allrounder schon, aber auch ohne Coding-Kenntnisse, denke ich das es vllt. auch ressourcenschonender geht ^^

#44 Sergej Müller am 25. Januar 2010 um 11:10

@Bichareh
Um Stylesheets und Skripte zu komprimieren und zusammenzufassen muss das Plugin enorm aufgestockt werden (Parsing, Caching etc.) – da ist die Fehlerquote sehr hoch. Da sich solche Dateien kaum ändern, macht eine manuelle Zusammenfassung und die Komprimierung in der .htaccess mehr Sinn. Setze ich selbst erfolgreich ein, habe dazu auch diverse Beiträge verfasst, z.B. JavaScript-Dateien mit Google bündeln.

Sergej Müller
#45 Bernhard am 25. Januar 2010 um 16:25

Habe dein Plugin gerade entdeckt. Es funktioniert super. Klar kann man mit serverseitiger Komprimierung mehr anfangen, aber ich habe es auf meinem ROOT Server bis heute nicht geschafft DEFALTE oder GZIP als apache Modul einzubinden. Bis dahin nutze ich also sein Plugin sehr gerne. Habe so auf meiner Startseite den HTML-Anteil von 186kb auf 26kb reduzieren können.

#46 Remi am 25. Januar 2010 um 19:24

Thank you so much for this amazing plugin!

14 Verlinkungen auf den Artikel

› WordPress 2.5 and gzip compression / Pixline

› Levysoft » Nuove modalità per risparmiare banda con Wordp [...]

› 21 Consigli per velocizzare il tuo blog WordPress

› Karte mit WordPress-Plugin wpMAPS | Webseiten-Infos.de

› WordPress-Websites beschleunigen » Peruns Weblog

› Fitness für’s Blog - Bandscheiben-Blog

› Websites beschleunigen - Websenat

› Plugins auf Webdomination - Webdomination

› Wie mache ich meinen Blog schneller ? - Spoony's Bike Blog

› Wordpress-Optimierung für Doofe – oder auch: selbst ausgetric [...]

› Blog-Ladezeiten Optimieren – Teil 1 - Blog, Ladezeiten, gzip, [...]

› Linksammlung Ladezeiten des Blogs optimieren - Majeres.de

› Wordpress' Ladezeiten verbessern - Beitrag - WordPress Magaz [...]

› Sergej Müller draufsteht, ist Qualität und Effizienz drin ;-) [...]