Seit dem Update auf WordPress 6.1 steht in den Empfehlungen zum Website-Zustand oftmals der Hinweis „Du solltest einen persistenten Objekt-Cache verwenden“ zur Verbesserung.
Was bedeutet persistenten Objekt-Cache konkret?
Laut WordPress.org: Ein persistenter Objekt-Cache hilft, die Ladezeiten von Seiten zu verkürzen, indem er dem Webserver Wege zur Datenbank erspart. Es müssen beispielsweise die Optionsdaten der Website bei jedem Seitenaufruf verfügbar sein. Ohne einen persistenten Objekt-Cache muss der Webserver diese Optionen bei jedem Seitenaufruf aus der Datenbank lesen. Diese zusätzlichen Zugriffe auf die Datenbank verlangsamen die Antwortzeiten des Webservers (TTFB) und können den Datenbankserver bei Verkehrsspitzen überfordern.
Damit die Website das Caching von persistenten Objekten nutzen kann, muss der Hosting-Provider Dir einen Cache-Server zur Verfügung stellen. Beliebte Cache-Server sind Redis, Memcached, APCu, OpCache, neuerdings auch Litespeed-Cache.
Memcached Object Cache
Bietet ein persistentes Backend für den WordPress-Objekt-Cache. Ein Memcached-Server und die PECL Memcached-Erweiterung sind erforderlich.
Redis Object Cache
Bietet ein konsistentes Redis-Objekt-Cache-Backend für WordPress, das mit verschiedenen Redis-Clients funktioniert. Ein Redis Server ist erforderlich.
Redis ist eine Speicher-Caching-Software, die z.B. auf dem beliebten Webhoster Cloudways läuft. Es kann verwendet werden, um die Backend-Leistung Deiner WordPress-Website zu beschleunigen, indem Datenbankabfragen und andere Objekte zwischengespeichert werden.
Dazu wird unter Anderem in der WP-Config ein Key Salt gesetzt.
define( 'WP_CACHE_KEY_SALT', 'deine-domain.de' );
Wie Redis Object Caching für WordPress auf der Cloudways Hosting-Plattform eingerichtet wird, siehst Du auf folgendem Video.
WordPress Plugins
Hier eine Auswahl von persistent Object-Cache Plugins zur Unterstützung, Aktivierung und Konfiguration.
- Für APCu gibt es z.B. das Plugin APCu Manager.
- Das Cache Plugin W3 Total Cache unterstützt unter anderem Memcache
- Redis Object Cache
- Memcached
Wie ich nachgucken, ob WordPress den php opcache auch nutzt?
OPcache ist seit einigen PHP-Versionen standardmäßig dabei und auch aktiviert. Wenn OPcache aktiviert ist, werden alle PHP-Scripte automatisch (in den Grenzen der konfigurierten Cache-Parameter natürlich) gecached, also benutzt WordPress den automatisch. Den aktuellen Status kannst Du Dir mit der PHP-Funktion opcache_get_status() ausgeben lassen, die entweder ein Array mit Informationen zum Cache oder den Wert false zurückliefert.
Am einfachsten schreibst Du Dir eine PHP-Datei mit folgendem Inhalt:
<?php $data = opcache_get_status(); var_dump($data); ?>
Die Meldung Persistent Object-Cache kann ignoriert werden
Aus folgenden Gründen:
- wenige Anwender werden dies wirklich benötigen
- falsch konfiguriert kann das ein großes Sicherheitsrisiko darstellen
- macht nicht unbedingt jede Webseite schneller
Solltest ist daher nur eine Empfehlung von WordPress (Automattic). Die Webseite läuft auch ohne Object-Cache problemlos.
OPCache wäre beispielsweise ein nicht persistenter Objekt-Cache und haben bereits die meisten Hoster aktiv. Was Automattic meint ist aber eher Redis und Memcached. Beides spezielle Server-Software und nicht unbedingt notwendig.
Wenn man den Object-Cache falsch konfiguriert, hat man schnell ein unschönes Datenleck (darüber sind schon große Onlineshops gestolpert, wo nach einem Login dann fremde Kundendaten zu sehen waren) und man kann mangels Erfahrung den Object-Cache so unsicher einrichten, dass jeder über bestimmte Ports alle Daten einfach auslesen kann.
Vor allem kann es auch Seiten langsamer machen, wenn man sich ein Plugin installiert, was nicht gut mit Object Caches umgehen kann.
Object Caches lohnen nur, wenn man genau weiss was man tut, brauchen aktive Pflege, wenn sie wirklich was bringen sollen und können zudem zu Problemen führen.
Die Meldung „Du solltest einen persistenten Objekt-Cache verwenden“ im WordPress-Backend deaktivieren
Die Meldung taucht unter Werkzeuge > Website-Zustand auf und kann per site_status_should_suggest_persistent_object_cache Filter deaktiviert werden.
Dazu in der functions.php Deines aktiven Themes folgenden Code einsetzen:
add_filter('site_status_should_suggest_persistent_object_cache', '__return_false');
Remove Object Cache Warning Plugin
Wir haben in GitHub den oberen Befehl in ein Plugin gepackt, sollte dies für Dich einfacher sein. Beim Klick auf das Bild, wird die aktuellste Version heruntergeladen:
Du möchtest die Geschwindigkeit erhöhen?
Hallo Joel,
ich verwende Avada – damit geht /** Persistenter Objektcache Warnung aus. */
add_filter(’site_status_should_suggest_persistent_object_cache‘, ‚__return_false‘);
jedenfalls nicht.
Hast Du netterweise einen Tipp auf Lager?
Nette Grüße
Ralph
Hallo Ralph,
in deinem Code sind die Hochkommas mE falsch.
add_filter('site_status_should_suggest_persistent_object_cache', '__return_false');
Ansonsten sollte es nicht am Theme liegen, solange du in der function.php den Code ordentlich einbaust. Hilft unser Plugin?
Lieben Gruß
Joel
Mir hat Deine Antwort und der Code sehr gut geholfen.
Vielen Dank für Deine Mühe, jetzt wird das nicht mehr angezeigt.
Lieber Bernhard,
vielen Dank für das positive Feedback und weiterhin viel Erfolg!
Lieben Gruß
Joel
Wo genau muss man den Code in function.php einfügen? Vielen Dank im Voraus…
Ans Ende der Function.php – falls Du dies noch nie gemacht hast lieber das Plugin nutzen.
Hallo Joel,
danke für die Antwort. Euer Plugin habe ich gar nicht benutzt, sondern den Befehl direkt in die functions.php gepackt. Hoffe, dass er das nächste Update überdauert.
Grüße
Ralph
Wird es, solange du ein Child-Theme nutzt 🙂 Andernfalls kann es bei einem Update überschrieben werden.
Hallo Joel,
Dein tipp mit dem Hochkomma war richtig. Vielen Dank!
LG
Ralph
Das freut mich! Weiterhin viel Erfolg
add_filter(’site_status_should_suggest_persistent_object_cache‘, ‚__return_false‘);
Vielen Dank hierfür – diese Warnung nervt einfach
Hallo Ralph, sehr gerne!