OPcache in WordPress – was ist das eigentlich und warum macht es meine Website schneller?

ChatGPT erklärt 😀

Wenn man eine WordPress-Website betreibt, stößt man früher oder später auf Begriffe wie PHP, PHP-FPM, Redis und OPcache. PHP und Redis sind vielen vielleicht schon ein Begriff. Aber was genau ist eigentlich OPcache? Und warum soll ein kleiner Speicher im Arbeitsspeicher dafür sorgen, dass eine WordPress-Website schneller läuft? Schauen wir uns das Thema einmal genauer an und erklären OPcache möglichst einfach.

1. Was ist OPcache?

OPcache ist ein Bestandteil von PHP und dient dazu, bereits verarbeiteten PHP-Code zwischenzuspeichern. Das klingt zunächst etwas kompliziert. Im Grunde kann man sich OPcache aber wie einen kleinen Kurzzeitspeicher vorstellen. WordPress besteht aus sehr vielen PHP-Dateien. Auch Themes und Plugins bestehen zum großen Teil aus PHP-Code. Bei einem Seitenaufruf muss PHP diesen Code verarbeiten, bevor WordPress die eigentliche Webseite erzeugen kann.

Ohne OPcache müsste PHP vereinfacht gesagt immer wieder:

  • die PHP-Datei finden,
  • den PHP-Code einlesen,
  • den Code analysieren,
  • ihn in ausführbaren Code umwandeln
  • und anschließend ausführen.

Das kostet Zeit und Rechenleistung. OPcache nimmt PHP einen Teil dieser Arbeit ab.

2. Wie funktioniert OPcache?

Stell dir vor, du musst jeden Tag ein bestimmtes Buch lesen. Ohne OPcache würdest du jedes Mal in die Bibliothek gehen, das Buch suchen, es holen und wieder von vorne anfangen. Mit OPcache liegt das Buch bereits auf deinem Schreibtisch. Du kannst sofort weiterlesen. Bei PHP funktioniert das ähnlich. Beim ersten Aufruf wird der PHP-Code verarbeitet und im OPcache abgelegt. Bei späteren Aufrufen kann PHP auf den bereits vorbereiteten Code zurückgreifen.

Vereinfacht sieht das so aus:

Ohne OPcache:

WordPress
   ↓
PHP-Dateien lesen
   ↓
PHP-Code analysieren
   ↓
Code kompilieren
   ↓
ausführen


Mit OPcache:

WordPress
   ↓
PHP
   ↓
OPcache
   ↓
bereits vorbereiteten Code verwenden
   ↓
ausführen

Das spart Arbeit und kann die Antwortzeit einer Website verbessern.

3. Warum ist OPcache gerade bei WordPress interessant?

WordPress besteht nicht nur aus dem eigentlichen WordPress-Kern.

Dazu kommen normalerweise noch:

  • ein Theme
  • mehrere Plugins
  • eigene Funktionen
  • eventuell WooCommerce
  • weitere PHP-Bibliotheken

Dadurch können bei einem Seitenaufruf sehr viele PHP-Dateien beteiligt sein. Je mehr PHP-Code verarbeitet werden muss, desto interessanter wird ein guter OPcache. Dabei geht es nicht darum, dass WordPress plötzlich einen völlig neuen Motor bekommt. Es geht vielmehr darum, dass PHP bereits erledigte Arbeit nicht ständig wiederholen muss.

4. OPcache ist kein Seiten-Cache

Hier gibt es eine wichtige Unterscheidung. OPcache speichert nicht einfach die fertige Startseite einer Website. Das wäre ein anderer Cache. OPcache kümmert sich hauptsächlich um den verarbeiteten PHP-Code. Andere Caching-Systeme können dagegen beispielsweise fertige Seiten oder Daten zwischenspeichern. Bei einer modernen WordPress-Installation können deshalb mehrere Cache-Systeme gleichzeitig sinnvoll sein.

Zum Beispiel:

Besucher
   ↓
Nginx
   ↓
PHP-FPM
   ↓
OPcache
   ↓
WordPress
   ↓
Redis
   ↓
MariaDB

OPcache und Redis haben dabei unterschiedliche Aufgaben.

5. OPcache und Redis – was ist der Unterschied?

Das wird häufig verwechselt. OPcache beschäftigt sich hauptsächlich mit PHP-Code. Redis kann WordPress-Daten und Objekte zwischenspeichern.

Man könnte vereinfacht sagen:

OPcache merkt sich den vorbereiteten PHP-Code.

Redis merkt sich häufig benötigte Daten.

Beide Systeme können sich deshalb sehr gut ergänzen.

6. Wie viel Speicher braucht OPcache?

OPcache verwendet einen Teil des Arbeitsspeichers des Servers.

Dabei gibt es unter anderem die Einstellung:

opcache.memory_consumption

Ein Wert von beispielsweise 128 MB bedeutet, dass OPcache bis zu 128 MB RAM für seinen Cache verwenden darf. Das bedeutet nicht, dass WordPress plötzlich 128 MB zusätzlichen Arbeitsspeicher benötigt. Es bedeutet lediglich, dass OPcache diesen Speicherbereich zur Verfügung hat. Interessant ist deshalb nicht nur die Größe des Speichers, sondern auch dessen tatsächliche Auslastung.

7. Was sind „Interned Strings“?

Eine weitere Einstellung hat zunächst einen etwas ungewöhnlichen Namen:

opcache.interned_strings_buffer

PHP verwendet ständig bestimmte Zeichenketten.

Zum Beispiel:

post
content
author
plugin
function
wordpress

Viele dieser Zeichenketten werden immer wieder verwendet. PHP kann sie deshalb in einem speziellen Speicherbereich ablegen und wiederverwenden. Auch hier kann man sich wieder einen einfachen Vergleich vorstellen. Wenn du ein Wort hundertmal brauchst, musst du es nicht hundertmal auf einen neuen Zettel schreiben. Du legst einen Zettel auf den Tisch und verwendest ihn immer wieder. Genau dafür gibt es den Bereich für sogenannte interned strings.

8. Warum kann dieser Wert wichtig sein?

Bei einer WordPress-Installation kann dieser Speicherbereich irgendwann sehr stark ausgelastet sein. Wenn er beispielsweise dauerhaft bei 100 Prozent liegt, kann es sinnvoll sein, den Wert zu erhöhen.

Ein typischer Ausgangswert kann beispielsweise sein:

opcache.interned_strings_buffer=8

Auf größeren WordPress-Installationen können beispielsweise 16 MB oder 32 MB sinnvoll sein. Entscheidend ist aber nicht die größtmögliche Zahl, sondern die tatsächliche Auslastung. Wenn beispielsweise 32 MB eingestellt sind und nur rund 47 Prozent verwendet werden, besteht noch ausreichend Reserve.

9. Wie sieht ein guter OPcache aus?

Eine mögliche Konfiguration für eine produktive WordPress-Website kann beispielsweise so aussehen:

OPcache:
Aktiv

OPcache-Speicher:
128 MB

Interned Strings:
32 MB

Maximale beschleunigte Dateien:
10.000

Dateiänderungen überprüfen:
Ja

Überprüfungsintervall:
2 Sekunden

JIT:
deaktiviert

Das sind allerdings keine universellen Pflichtwerte. Die optimale Einstellung hängt unter anderem von der Größe der Website, der Anzahl der Plugins und dem verfügbaren Arbeitsspeicher ab. Interessant ist deshalb vor allem die tatsächliche Auslastung.

10. Was bedeutet die Hit Rate?

Die Hit Rate ist ein interessanter Wert.

Eine hohe Hit Rate bedeutet vereinfacht:

PHP findet den benötigten Code bereits im OPcache und muss ihn nicht erneut vollständig vorbereiten.

Eine Hit Rate von beispielsweise 95 Prozent ist ein sehr guter Wert. Allerdings sollte man die Hit Rate nicht isoliert betrachten. Wenn der PHP-FPM-Dienst gerade neu gestartet wurde, ist der Cache zunächst leer. Die Hit Rate muss sich danach erst wieder aufbauen. Eine niedrigere Hit Rate direkt nach einem Neustart ist deshalb völlig normal.

11. Warum wird JIT nicht einfach aktiviert?

Bei PHP gibt es neben OPcache noch JIT. JIT steht für Just-in-Time Compilation. Das klingt zunächst so, als müsste man JIT unbedingt aktivieren, wenn man eine schnelle Website möchte. Ganz so einfach ist es aber nicht. WordPress profitiert nicht automatisch stark von JIT. Für eine typische WordPress-Website ist ein sauber konfigurierter OPcache wesentlich wichtiger. Deshalb kann JIT bei WordPress problemlos deaktiviert bleiben.

12. Muss man OPcache ständig optimieren?

Nein. Das ist vielleicht die wichtigste Erkenntnis. Man sollte nicht einfach möglichst große Zahlen einstellen. Mehr Speicher bedeutet nicht automatisch mehr Geschwindigkeit. Wenn ein Server beispielsweise nur einen kleinen Teil des OPcache benötigt, bringt es wenig, den Speicher immer weiter zu vergrößern.

Wichtig ist vielmehr:

  • Ist OPcache aktiviert?
  • Ist der Cache voll?
  • Ist die Hit Rate gut?
  • Ist der Bereich für interned strings ausreichend groß?
  • Funktioniert PHP-FPM korrekt?

Wenn diese Punkte stimmen, sollte man das System möglichst in Ruhe lassen.

13. Was bringt OPcache für eine WordPress-Seite?

OPcache macht WordPress nicht auf magische Weise schneller. Aber er reduziert unnötige Arbeit für PHP. Das ist besonders bei Websites interessant, bei denen viele PHP-Dateien beteiligt sind.

Die eigentliche Geschwindigkeit einer WordPress-Website hängt natürlich noch von vielen anderen Faktoren ab:

  • PHP-FPM
  • Nginx
  • Datenbank
  • Redis
  • WordPress
  • Plugins
  • Theme
  • Bilder
  • JavaScript
  • CSS
  • Netzwerk
  • Hosting-Hardware

OPcache ist also nur ein Baustein. Aber ein wichtiger.

Fazit

OPcache klingt zunächst nach einem komplizierten Begriff aus der Welt der Servertechnik. Eigentlich ist das Prinzip aber ziemlich einfach. OPcache merkt sich bereits verarbeiteten PHP-Code. Dadurch muss PHP bestimmte Arbeiten nicht bei jedem Seitenaufruf von vorne erledigen.

Für WordPress bedeutet das:

Weniger unnötige Arbeit
        ↓
Weniger CPU-Aufwand
        ↓
PHP kann effizienter arbeiten
        ↓
WordPress kann schneller reagieren

Eine sinnvolle OPcache-Konfiguration, ausreichend Speicher und eine gute Hit Rate sorgen dafür, dass PHP effizient arbeiten kann.

Und genau das ist eigentlich die wichtigste Regel bei der Serveroptimierung:

Nicht möglichst viel einstellen, sondern genau so viel, wie das System tatsächlich braucht.

Ein gut optimierter Server muss nicht kompliziert aussehen. Er muss einfach zuverlässig und effizient arbeiten.

An extreme close-up of colorful programming code on a computer screen, showcasing development and software debugging.

0
Nach oben scrollen