WP Performance Pack

Beschreibung

WP Performance Pack ist die erste Wahl zur Beschleunigung des WordPress-Cores ohne umständliches Patchen. Das Plugin bietet Funktionen zur schnelleren Übersetzung von WordPress und verbesserte Bildverarbeitung (schnellerer Upload, geringerer Webspace-Verbrauch, dynamisch erzeugt Zwischengrößen). Kombiniert mit der vorhanden CDN-Unterstützung für Front- und Backend ähnelt die verbesserte Bildbearbeitung der Funktionalität von Jetpacks Photon.

Features

Verbesserung der Übersetzungsgeschwindigkeit

Translating WordPress is slow and uses much memory because by default WordPress loads all translations upon each request. WPPP improves performance and memory usage by using native gettext or dynamic loading of translations. If an object cache is installed optional caching improves performance even further.

  • Verwendung der PHP-Gettext-Erweiterung, wenn verfügbar.
  • Dynamisches Laden von Übersetzungsdateien. Nur benötigte Texte werden geladen.
  • Disable Backend localization while maintaining frontend localization (with optional override by user)
  • Caching verbessert die Übersetzungsgeschwindigkeit weiter. Hierzu muss ein persistenter Object-Cache installiert sein.

Verbesserte Bildverarbeitung

Create intermediate image sizes on demand not on upload.

  • Don’t create intermediate images on upload, instead dynamically create intermediate images when accessed.
  • Choose to save intermediate image sizes or to recreate them upon each access. Created images can be saved into a folder different from the original images folder.
  • Wenn vorhanden, EXIF-Vorschaubilder zum Erzeugen von Zwischengrößen benutzen. Dies reduziert Speicherverbrauch und CPU-Last, da die Quelle für die Zwischengröße deutlich kleiner ist.
  • Anpassung der Bildqualität für Zwischengrößen.
  • Integration in diverse Regenerate-Thumbnails-Plugins, um bereits vorhandene, gespeicherte Bildzwischengrößen zu löschen. Unterstütze Plugins: Regenerate Thumbnails, AJAX Thumbnail Rebuild, Simple Image Sizes

Disable WordPress default widgets (BETA)

Really disable WordPress‘ default widgets. Other plugins which allow you to disable WordPress default widgets only hide them, but the widgets‘ files will still be loaded. WPPP really removes the widgets: Files of disabled widgets won’t get loaded.

CDN-Unterstützung

  • Dynamisch erzeugte Bildzwischengrößen per CDN ausliefern, sowohl im Backend, als auch im Frontend. Zwischengrößen müssen so nicht lokal gespeichert werden.
  • Automatische Verwendung lokaler Bilder, wenn das CDN nicht funktioniert.
  • Dynamische Bild-URLs: Bild-URLs werden dynamisch beim Anzeigen eines Beitrags erzeugt.
  • Unterstützte CDNs: CoralCDN, MaxCDN, eigene

WordPress-Features ändern oder deaktivieren

  • Header-Elemente abschalten, z.B. Generator-Name, Feed-Links und mehr
  • Heartbeat-Einstellungen anpassen
  • Edi-Lock deaktivieren
  • Emoji-Unterstützung deaktivieren
  • Verwendung einer persistenten Datenbankverbindung

Screenshots

  • Nicht benötigte Module können komplett deaktiviert werden (v2.0)
  • Verbesserte Bildverarbeitung, einfache Ansicht (v2.0)
  • Verbesserte Bildverarbeitung, erweiterte Ansicht (v2.0)
  • Verbesserung der Übersetzungsgeschwindigkeit, erweiterte Ansicht (v2.0)
  • Ändern oder Deaktivieren von WordPress-Features, erweiterte Ansicht (v2.0)
  • Debug Bar-Integration (v1.0)
  • MO_dynamic-Benchmark: Vergleich der Ladezeiten einer sauberen Installation von WordPress 3.8.1 mit unterschiedlichen Konfigurationen. Wie zu sehen ist MO_dynamic mit aktiviertem Caching fast so schnell, wie die Verwendung von nativem Gettext. Die Werte wurden mit WPPP Version 0.6 ermittelt. Durchschnittswerte aus vier Durchläufen, gemessen mit XDebug.

Installation

Benötigt PHP >= 5.3 und WordPress >=4.7

  • Herunterladen, installieren, aktivieren.
  • Native Gettext-Unterstützung benötigt die PHP-Gettext-Erweiterung und Schreibrechte auf dem Ordner wp-content/wppp/localize.
  • Caching bietet nur dann Vorteile, wenn ein persistenter Object-Cache installiert ist.
  • Für Debugging muss das Plugin Debug Bar installiert und aktiviert sein.

FAQ

Wie kann ich erkennen, ob das Caching funktioniert?

Der Cache wird nur benutzt, wenn die alternative MO-Implementierung verwendet wird. Zum Überprüfen, ob der Cache verwendet wird, aktiviere das WPPP-Debugging (benötigt das Plugin Debug Bar). Dies fügt der Debug Bar eine neue Seite WP Performance Pack hinzu. Auf dieser werden u.a. Informationen über aus dem Cache geladene Übersetzungen angezeigt.

Welche Object-Cache-Plugins werden empfohlen?

Jeder persistente Object-Cache funktioniert, allerdings muss er vom Webserver unterstützt werden. Prüfe, ob Caches wie APCu, XChache, Memcache o.ä. auf dem Webserver installiert sind und wähle ein entsprechendes Cache-Plugin. Datei oder Datenbank basierte Caches funktionieren ebenfalls, wirken sich aber weniger positiv auf die Geschwindigkeit aus.

Unterstützt WPPP Multisite-Installationen?

Die Verbesserungen der Übersetzung funktionieren auch mit Multisite-Installationen. Wird WPPP netzwerkweit installiert, kann nur der Netzwerk-Admin die WPPP-Einstellungen sehen und bearbeiten. Die verbesserte Bildbehandlung ist nur verfügbar, wenn WPPP netzwerkweit installiert ist.

Was ist der Unterschied zwischen dem Plugin Dynamic Image Resizer und WPPPs dynamischen Bildgrößen?

In den ersten Versionen basierte WPPPs dynamische Bilderzeugung auf dem Plugin Dynamic Image Resizer, lediglich mit ein paar kleinen Änderungen. Die erste große Änderung bestand darin, Rewrite-Regeln statt des 404-Handlers für die Erzeugung der Zwischengrößen zu verwenden. Mit WPPP 1.8 kam die Verwendung von Ableitungen von WP-Image-Editor, um das Erzeugen von Zwischengrößen beim Upload zu verhindern. Diese Methode ist deutlich effektiver und funktioniert auch beim Bearbeiten von Bildern.

Laut Autor ist Dynamic Image Resizer lediglich ein Proof-Of-Concept. WPPPs dynamische Bilderzeugung könnte man als funktionierende Implementierung dieses Proof-Of-Concepts bezeichnen.

Wie repariere ich meine Bilder, wenn diese nach Verwendung der dynamischen Links nicht mehr funktionieren?

Zuerst solltest Du die Funktion „Statische URLs wiederherstellen“ in den WPPP-Einstellungen versuchen. Diese Funktion wird auch automatisch beim Deaktivieren von WPPP ausgeführt. Falls dabei Fehler auftreten (wenn ja, bitte die Fehler im Support-Forum posten, damit ich die Funktion entsprechend anpassen kann), kannst Du die folgende SQL-Funktion direkt verwenden, um die Links wiederherzustellen:

UPDATE wp_posts SET post_content = REPLACE ( post_content, ‚{{wpppdynamic}}‘, ‚http://your.base-url/wp-content/uploads/‘ )

Die Basis-URL (dritter Parameter von REPLACE) muss durch Deine Basis-URL ersetzt werden!

Funktionsweise der Übersetzungs-Beschleunigung.

WPPP überschreibt WordPress‘ Standardimplementierung über den Hook override_load_textdomain. Die schnellste Übersetzungsmethode ist die Verwendung von nativem Gettext. Hierfür wird die PHP-Erweiterung Gettext benötigt. WPPPs Gettext-Implementierung basiert auf Bernd Holzmuellers Translate_GetText_Native.

Als zweite Möglichkeit bietet WPPP einen komplett neu geschriebenen MO-Reader (MO_dynamic bzw. alternativer MO-Reader). Der WordPress eigene MO-Reader lädt immer komplette Übersetzungsdateien in den Speicher, auch wenn nur eine einzige Übersetzung davon verwendet wird. Dies kostet Zeit und Speicherplatz. MO_dynamic lädt nur verwendete Übersetzungen in dem Moment, wenn sie verwendet werden. Auch wenn die gezielte Suche nach einzelnen Übersetzungen etwas langsamer ist, sorgt die deutlich schnellere Ladezeit und der geringere Speicherverbrauch insgesamt für eine wesentlich schnellere Übersetzung.

Die Verwendung eines Caches kann die Geschwindigkeit weiter erhöhen. Wird der alternative MO-Reader verwendet, werden Übersetzungen über WordPress‘ Object-Cache-API gecachet. Frontend-Seiten verwenden üblicherweise wenige Übersetzungen, daher wird für alle Frontend-Seiten ein Cache verwendet. Backend-Seiten hingegen verwenden meist viele Übersetzungen, weshalb jede Backend-Seite ihren eigenen Cache verwendet, mit einem extra Basis-Cache pro Textdomain. Dieser Basis-Cache enthält diejenigen Übersetzungen, die auf allen Backend-Seiten verwendet werden (Übersetzungen, die vor dem Ereignis admin-init verwendet wurden). Dies dient dazu, die Cache-Größe zu verringern, da diese häufig recht begrenzt ist. Um die Größe noch weiter zu reduzieren, werden die Übersetzungen komprimiert, bevor sie gecachet werden.

Funktionsweise der dynamischen Bildzwischengrößen.

Zwischengrößen von Bildern werden nicht beim Upload erzeugt. Statt dessen werden die Bilder und die dazugehörigen Metadaten erst beim jeweiligen ersten Zugriff erzeugt. Dazu leitet WPPP alle registrierten WP-Image-Editor-Klassen ab und überschreibt die Funktion multi_resize. Da die Ableitung dynamisch erfolgt, funktioniert dies mit jeder Image-Editor-Implementierung. Die Zwischengrößen werden dann über Rewrite-Regeln erzeugt. Wird auf eine nicht existierende Zwischengröße zugegriffen, wird die Anfrage auf eine spezielle PHP-Datei umgeleitet, die nur ein Minimum an WordPress-Code lädt. Die Umleitung erfolgt über die htaccess-Datei.

Wenn ein nicht existierendes Bild angefordert wird, prüft WPPP ob die angeforderte Bildgröße einer der registrierten Bildgrößen entspricht (entweder eine der Standardgrößen „thumbnail“, „medium“ oder „large“ oder eine andere, von Plugins oder vom Theme registrierten Zwischengrößen). Hieran erkennt WPPP auch, ob das Bild beschnitten werden soll, oder nicht.

How does WPPPs disable widget feature differ from other plugins

Most other plugins which allow you to disable widgets just unset the respective widgets in WordPress‘ global widget list. This doesn’t prevent the widgets‘ code to be loaded. WPPP disables default loading of widgets completely and only loads those files required to create the enabled widgets. Available widgets are detected when the modules settings page is displayed by scanning the wp-includes/widgets folder for any classes extending WP_Widget. It only has a small impact on performance and memory usage but many small improvements can become quite big.

Rezensionen

5. Februar 2020
Very worth your time! The only plugin which helped me to upload a whole album of pictures without waiting a day. Awesome dynamic image sizes!
Lies alle 11 Rezensionen

Mitwirkende & Entwickler

„WP Performance Pack“ ist Open-Source-Software. Folgende Menschen haben an diesem Plugin mitgewirkt:

Mitwirkende

„WP Performance Pack“ wurde in 1 Sprache übersetzt. Danke an die Übersetzerinnen und Übersetzer für ihre Mitwirkung.

Übersetze „WP Performance Pack“ in deine Sprache.

Interessiert an der Entwicklung?

Durchstöbere den Code, sieh dir das SVN Repository an oder abonniere das Entwicklungsprotokoll per RSS.

Änderungsprotokoll

2.4

  • [dynimg] Some fixes and improvements when using object cache for intermediate image sizes.
  • [gettext] Added code page to setlocale calls.
  • „Simple view“ for options removed.
  • jQuery switchButton removed (it didn’t work in WordPress 5.5)

2.3.3

  • [dynimg] „Cache folders“ for intermediate images aren’t created anymore if saving of intermediate images is disabled.
  • [dynimg] Improved method for determining local file path for requested images.

2.3.2

  • [wpfeatures] Additional script is deregistered when heartbeat is deactivated
  • [mo-dynamic] Some bug fixes (thanks @gr0b1)
  • Fixed undefined index on clean install (thanks @jmslbam)
  • Cache hint was displayed even if an object cache was installed
  • Debugging now works with Query Monitor.

2.3.1

  • [dynimg] Small fix when using new serve method and intermediate images aren’t saved into the same folder as the original.

2.3

  • [dynimg] NEW! New method to dynamically create intermediate image sizes added: You can now use WordPress‘ internal 404 handling as method. This is slower but doesn’t require any additional rewrite rules so it should work out of the box with any web server that supports WordPress permalinks (i.e. IIS).
  • [jit] Support for WordPress 5.3.2 added.
  • Fixed some typos.

2.2.6

  • [gettext] Improved error handling during test for native gettext support.
  • [mo-dynamic] Some smaller improvements.

2.2.5

  • Fixed some JavaScript errors in options.
  • [mo-dynamic] Fixed PHP notice (thanks @erwinbr)
  • Some minor changes and improvements

2.2.4

  • [dynimg] Delete rewrite rules on plugin deactivation (thanks @lucabarelli)
  • [dynimg] Bugfix when PHP is not loaded as Apache module (thanks @lucabarelli)
  • [dynimg] Dynamically created intermediate image sizes of on upload scaled images now get saved if saving of intemediate sizes isn’t disabled (thanks @wimsjohn)

2.2.3

  • [dynimg] Added option „Inherit rewrite rules“ for compatibility with e.g. WebP Express
  • [dynimg] Some fixes and improvements in writing rewrite rules.

2.2.2

  • [dynimg] Bugfix in overriding existing image editors
  • [dynimg] Fixed Regenerate Thumbnails integration (now works with REST API version of Regenerate Thumbnails)
  • Some minor changes and improvements

2.2.1

  • [dynimg] Bugfix while editing images
  • Reduced plugin base load

2.2

  • [widgets] NEW! Module Widgets allows to really deactivate WordPress‘ default widgets.
  • Some smaller fixes and improvements

2.1.3

  • [mo-dynamic] PHP <= 7.0 compatibility fix (thanks @no3x)

2.1.2

  • [wpfeatures] NEW! Disable JQuery migrate
  • [mo-dynamic] Some minor tweaks and fixes for PHP >= 7.3
  • [dynimg] Settings page adjustments

2.1.1

  • [mo-dynamic] Warning/error with PHP 7.2 removed (thanks @jensmombaerts)
  • [mo-dynamic] Fixed plurals translation (thanks @wordpressserg)

2.1

  • [dynimg] Compatible with WordPress 5.3 changes
  • [wpfeatures] NEW! Big image scaling added.
  • [dynimg] NEW! Option to save dynamically created images into a „cache folder“ to keep your upload folders „clean“

2.0.5

  • [dynimg] Bugfix in wp_get_attachment_meta filter
  • [cdn] Bugifx in CDN down warning
  • [mo-dynamic] Futher performance improvements
  • [mo-dynamic] Added improvements by @mte90
  • [jit] Support for WordPress 4.8.1 added

2.0.4

  • [jit] Unterstützung für WordPress-Versionen vor 4.7 entfernt
  • Anpassungen für Texte und Übersetzungen

2.0.3

  • [jit] Bugfix: Eine Skripte wurden nicht übersetzt.
  • [wpfeatures] NEU! Heartbeat-Frequenz hinzugefügt.

2.0.2

  • [mo-dynamic] Bugfix: Übersetzungen mit Kontext schlugen fehl.
  • Text- und Readme-Änderungen

2.0

Das letzte Update ist schon eine ganze Weile her. In all der Zeit habe ich viel an WPPP gearbeitet, allerdings nie ein Update veröffentlich. Die folgende Liste der Änderungen seit der Version 1.10.4 dürfte daher recht lückenhaft sein. Vorsicht bei der Verwendung auf Multisite-Installationen! Version 2.0 ist nicht mit Multisite getestet.

  • [wpfeatures] NEU! Neues Modul „WP-Features“ erlaubt das Ändern oder Deaktivieren von WordPress-Features, z.B. Emoji-Unterstützung, Edit-Lock und diverser Header-Elemente.
  • [dynimg] NEU! EXIF-Unterstützung für ImageMagick.
  • [dynimg] NEU! All registrierten Zwischengrößen werden verwendet, unabhängig von den Bild-Metadaten
  • [dynimg] NEU! Beim Upload werden keine Meta-Daten für Zwischengrößen erzeugt. Erst wenn eine entsprechende Zwischengröße erzeugt und gespeichert wird, werden auch die dazugehörigen Meta-Daten erzeugt.
  • [jit] Unterstützung für WordPress-Versionen 4.7.4, 4.7.5 und 4.8 hinzugefügt.