Artikel vom 31. März 2008

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

Zip

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.

Social Werkzeuge

60 Kommentare zum Artikel

849 Tage zuvor | #1 Frank

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.

Frank
849 Tage zuvor | #2 Sergej Müller

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
849 Tage zuvor | #3 Frank

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

Frank
849 Tage zuvor | #4 Frank

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

Frank
849 Tage zuvor | #5 Sergej Müller

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
849 Tage zuvor | #6 Frank

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.

Frank
849 Tage zuvor | #7 Sergej Müller

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
849 Tage zuvor | #8 Frank

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.

Frank
849 Tage zuvor | #9 Sergej Müller

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
849 Tage zuvor | #10 Frank

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?

Frank
849 Tage zuvor | #11 Sergej Müller

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
849 Tage zuvor | #12 Frank

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 ;-) .

Frank
849 Tage zuvor | #13 Sergej Müller

Sonst hätten wir Entwickler nichts zu tun :)

Sergej
818 Tage zuvor | #14 Manuel

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

Manuel
818 Tage zuvor | #15 Sergej Müller

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

Sergej
818 Tage zuvor | #16 Manuel

Nein

Manuel
818 Tage zuvor | #17 Sergej Müller

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
818 Tage zuvor | #18 Manuel

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

Manuel
818 Tage zuvor | #19 Sergej Müller

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

Sergej
818 Tage zuvor | #20 Manuel

Funktioniert, danke :D

Manuel
817 Tage zuvor | #21 Sergej Müller

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

Sergej
817 Tage zuvor | #22 Manuel

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

Manuel
817 Tage zuvor | #23 Sergej Müller

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

Sergej
497 Tage zuvor | #24 Dieter

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

Dieter
464 Tage zuvor | #25 Klaus

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

Klaus
464 Tage zuvor | #26 Sergej Müller

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

Sergej
461 Tage zuvor | #27 Chris

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?

Chris
460 Tage zuvor | #28 Sergej Müller

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
460 Tage zuvor | #29 Chris

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 ;)

Chris
230 Tage zuvor | #30 funkygog

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?

funkygog
230 Tage zuvor | #31 Sergej Müller

@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
230 Tage zuvor | #32 Stefan B.

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.

Stefan B.
230 Tage zuvor | #33 funkygog

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.

funkygog
230 Tage zuvor | #34 Sergej Müller

@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
194 Tage zuvor | #35 René

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?

René
194 Tage zuvor | #36 Sergej Müller

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
194 Tage zuvor | #37 René

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

René
194 Tage zuvor | #38 Sergej Müller

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
194 Tage zuvor | #39 René

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

René
194 Tage zuvor | #40 Sergej Müller

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
194 Tage zuvor | #41 René

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

René
194 Tage zuvor | #42 Sergej Müller

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

Sergej
187 Tage zuvor | #43 Bichareh

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 ^^

Bichareh
187 Tage zuvor | #44 Sergej Müller

@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
187 Tage zuvor | #45 Bernhard

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.

Bernhard
187 Tage zuvor | #46 Remi

Thank you so much for this amazing plugin!

Remi
69 Tage zuvor | #47 MR

Sollte das Plugin mit den aktuellen WP Versionen noch funktionieren? Die Installation läuft reibungslos, aber laut Page Speed Tool von Google erfolgt keine Komprimierung.

MR
69 Tage zuvor | #48 Sergej Müller

@MR
Müsste, denn das Plugin ist an keine WordPress-Funktionalitäten gebunden.

Sergej Müller
36 Tage zuvor | #49 Dominik Heinrich

Am Anfang des Threads macht Frank dies manuell. Kann man beide Methoden zusammenführen ???

Wurden schon Test durchgeführt auf WP 3.0 ?

Dominik Heinrich
36 Tage zuvor | #50 Sergej Müller

Entweder oder. Die beiden Methoden machen doch das gleiche. Es handelt sich um reine PHP-Funktionen, ist also WordPress-Version unabhängig.

Sergej Müller
26 Tage zuvor | #51 Volker

hallo sergej,

danke für das plugin. bin gespannt, wie sich die performance verbessert!

voreingestellt ist level 6. ist es empfehlenswert, das hoczusetzen oder runter? was sind da vor und nachteile? denke bei 9, höhere komprimierung und kürzere ladezeiten? meine seite ist trotz caching und deinem plugin noch so langsam… liegt es an der cloud?

für ein tipp wäre ich dir dankbar!

danke und gruß

volker

Volker
26 Tage zuvor | #52 Sergej Müller

Optimierung der Seiten ist allein durch dieses Plugin nicht getan. Es gibt noch zig andere Lösungen. Die Wirkung des Plugins bringt nur einen Bruchteil der möglichen Optimierung.

Sergej Müller
26 Tage zuvor | #53 Claudia Wüster

> [...] Es gibt noch zig andere Lösung.

Kannst Du da mal eine Zusammenfassung machen ?

Ich weiss zwar nicht wie es heisst, aber es gibt ein PlugIn, dass alle Zeilenumbrüche und Leerzeichen entfernt. Bringt auch schon mal einiges an Bytes bzw. KBs.

CSS-Booster, wäre der andere Kandidat und W3Cache. Allzu viel fallen mir auf Anhieb nicht ein.

Claudia Wüster
26 Tage zuvor | #54 Sergej Müller

@Claudia Wüster
Ich habe hier im Blog sehr viele Ansätze zur Optimierung vorgestellt. Einfach blättern.

Sergej Müller
9 Tage zuvor | #55 Peter Djordjevic

Hallo Sergej,

danke für Deine Gute Arbeit die Du leistest. Das wp-Seo-Plugin nutzte ich schon jetzt einige Zeit und bin auf die neue Version gespannt …

… habe das WP-Compression- Plugin nun einmal getestet. Ich erhalte aber nicht das gewünschte Ergebniss. Mag es daran liegen das ich WP-Super-Cache benutzte oder am Provider der die gzip-Compression nicht zulässt?

Über Dein Feedback freue ich mich.

Peter

Peter Djordjevic
9 Tage zuvor | #56 Sergej Müller

Peter, beides kann die Ursache sein. Leider kommt das Plugin ohne einer Benutzeroberfläche aus, kann daher keine Hinweise ausgeben. Aber hat das besagte Cache Plugin nicht sowieso eine ähnliche gzip-Option?

Sergej Müller
9 Tage zuvor | #57 Andreas Zech

Jo, das Super Cache Plugin hat dieses gzip-Kompression. Überhaupt kann man hier eine Menge einstellen. Ich finde es mittlerweile besser als W3 Cache.

Kann man, muss man nun in der wp-config noch Einstellungen für den Cache machen ? Auf der Webseite von Frank Bueltgen gab es da mal einen Blog-Beitrag dazu.

Andreas Zech
8 Tage zuvor | #58 Peter Djordjevic

Hallo Sergej,

ich habe meinen Provider jetzt einmal angeschrieben: mein Server nutzt Apache 1.3. und dort ist kein gzip eingeschaltet. Generell nutzt der Provider gzip nur unter Apache 2.0. .
Ob Super-Cache gzip einsetzt mache ich mich einmal schlau.
Besten Dank, Sergej, für deine Antwort.

Herzlichst
Peter

Peter Djordjevic
8 Tage zuvor | #59 Sergej Müller

Muss man nicht. Ich bin der Meinung, in den neuen WordPress Versionen ist der Cache eh an. Hat aber mit gzip nichts zu tun, ist Caching, keine Datenkomprimierung ;)

Sergej Müller
8 Tage zuvor | #60 Peter Djordjevic

… haste’ recht. ;-)

Peter Djordjevic

18 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 ;-) [...]

› Ladezeit von Wordpress deutlich verbessern | chivali.de

› 7 Tipps: WordPress beschleunigen » WordPress, Google, Besucher, [...]

› Mit wpCompressor Wordpress Beiträge komprimieren | miZine

› Seiten beschleunigen Teil 4 – die gzip-Compression | Webma [...]

Kommentar verfassen