Website-Cache & serverseitiger Cache: So funktioniert Caching in WordPress

Affiliate-Hinweis v3.1
Affiliate-Hinweis v3.2 (mobil)

Als ich Website-Cache und serverseitigen Cache auf dem Server geprüft habe, auf dem diese Website läuft, liefen WordPress-Seitenanfragen vom Browser über CDN, Seiten-Cache, OPcache und Redis nach unten und stoppten an der Schicht, die eine Kopie hatte. Seitenanfragen, die direkt beim Ursprungsserver ankamen, bekamen die von WP Rocket erzeugte HTML-Datei sofort von nginx und reichten nie bis zu PHP oder der Datenbank.

Ⅰ. Aufbau des WordPress-Caches

In der Informatik ist ein Cache eine Technik, Daten vorübergehend zu speichern, damit sie schnell abrufbar sind; im Web funktioniert er nach demselben Prinzip und trägt viel zur Leistung bei.

Caching speichert Daten, damit der Server beim Aufruf einer Website nicht jedes Mal alles neu erzeugen muss; gespeicherte Daten laden schnell, und die Ladezeit sinkt. Das senkt die Serverlast und verbessert das Nutzererlebnis.

Die Caches für WordPress-Anfragen teilen sich in zwei Zweige: Website-Cache und serverseitiger Cache. Der HTTP-Caching-Standard, wie ihn MDN beschreibt, unterscheidet einen Cache, der nur im Browser eines einzelnen Besuchers liegt (private cache), von CDN- und Proxy-Caches, die viele Besucher gemeinsam nutzen (shared cache); dieser Beitrag fasst beide als Website-Cache zusammen.

Seiten-Cache, OPcache und Objekt-Cache hängen am Ablauf, mit dem WordPress im Server läuft. Der HTTP-Standard kennt dafür keine eigene Kategorie; die Einteilung stammt aus der offiziellen WordPress-Dokumentation: Caching-Plugins (Seiten-Cache), Objekt-Cache und Server-Cache (Opcode-Caches wie OPcache).

🗂️ Caches, die eine WordPress-Anfrage durchläuft
🌐 Website-CacheHTTP-Cache · Einteilung nach MDN
private cacheBrowser-Cache
shared cache
proxy cacheProxys in Firmen- oder Providernetzen
managed cacheCDN · Reverse Proxy (Varnish)
🖥️ Serverseitiger CacheEinteilung der offiziellen WordPress-Dokumentation
Seiten-CacheStatisches HTML aus einem Caching-Plugin (WP Rocket)
OPcacheOpcode-Cache · PHP-Ausführung
Objekt-CacheDaten, die nach der Anfrage erhalten bleiben (Redis)

Alle Bereiche, in denen Caching eingesetzt wird, sind im Beitrag Was ist Cache? Definition und alle Bereiche, in denen Caching genutzt wird beschrieben, die vier Zweige der Performance-Optimierung samt Caching im Beitrag Web-Performance-Optimierung: Aufbau und Definition zusammengefasst.

Wähle im Simulator unten links im Baum einen Cache und tippe auf einen Chip; dann siehst du, an welcher Schicht die Anfrage stoppt. Die erste Schicht, die WordPress-Betreiber mit einem Caching-Plugin einschalten, ist der Seiten-Cache.

🧭 Cache-Schichten-SimulatorErklär-Simulator
🗂️ Caches, die eine WordPress-Anfrage durchläuft
🧰 Art der Anfrage
Browser-Cache
Der HTTP-Cache im Browser des Besuchers. Wähle [Bild · CSS] und tippe [Erster Besuch] → [Erneuter Besuch]: Ab dem zweiten Mal geht keine Anfrage an den Server.
HTTP-Cache-Header
Die Regeln, mit denen der Server Browsern und CDNs sagt, wie lange sie eine Kopie speichern. Die Header-Zeilen im Antwortprotokoll sind echte Werte von einem Server mit Nginx + Apache.
CDN · Proxy-Cache
Eine Kopie, die viele Besucher gemeinsam nutzen. Schalte [CDN nutzen] ein und tippe [Erster Besuch] → [Erneuter Besuch]: Die Antwort endet am Edge.
Seiten-Cache
Speichert das von PHP erzeugte HTML als Datei. Tippe [Erneuter Besuch], und die Anfrage reicht nicht bis zu PHP und Datenbank.
OPcache
Hält kompilierten PHP-Bytecode im Speicher. Bei [Besuch nach Bearbeiten des Beitrags] läuft PHP erneut, aber das Kompilieren entfällt.
Objekt-Cache
Speichert Abfrageergebnisse in Redis. Bei [Besuch nach Bearbeiten des Beitrags] werden nur die geänderten Beitragsdaten neu aus MariaDB gelesen.
Gesamter Ablauf
Eine Anfrage läuft von oben nach unten und stoppt an der ersten Schicht, die eine Kopie hat.
SchichtSpeicherortWas gespeichert wirdBeispiel Nginx + Apache
Browser-CacheGerät des BesuchersHTML · CSS · JS · Bilder · SchriftenCSS · Bilder 7 Tage
CDN · Proxy-CacheVor dem Server (Edge · Reverse Proxy)Kopien von Seiten · statischen DateienBunny CDN
Seiten-CacheFestplatte · Speicher des ServersVon PHP erzeugtes HTMLWP Rocket + nginx
OPcacheSpeicher des ServersPHP-BytecodePHP 8.3, JIT aus
Objekt-CacheSpeicher des ServersAbfrageergebnisse · ObjekteRedis
Ein Erklär-Simulator, der nur in deinem Browser läuft. Die Header-Zeilen im Antwortprotokoll stammen vom 10. Oktober 2026 von einem Server mit Nginx + Apache; Werte in Klammern wie das ETag nach der Bearbeitung sind Beispiele.

Ⅱ. Website-Cache

Website-Cache ist der Cache, bei dem der Server über Antwort-Header sagt, wie gespeichert werden soll, und Browser sowie CDNs oder Proxys danach eine Kopie ablegen. Typische Header sind [Cache-Control], [ETag] und [Expires]; nach Ablauf der Speicherdauer prüft eine bedingte Anfrage ([304 Not Modified]), ob sich etwas geändert hat.

1️⃣ Browser-Cache

Der Browser-Cache ist der HTTP-Cache im Webbrowser des Besuchers. Er speichert HTML, CSS, JavaScript, Bilder und Schriften; wird dieselbe Ressource erneut angefragt, geht er entweder gar nicht zum Server oder prüft nur, ob sie sich geändert hat.

Die Speicherdauer legt der Server fest, nicht der Besucher. Der Nginx + Apache-Server unten gibt CSS und Bildern 7 Tage vor und liefert HTML-Seiten ohne Dauer aus, sodass sie bei jedem Besuch erneut geprüft werden.

📨 Gemessene Antwort-HeaderNginx + Apache · 2026-10-10
💻 Computer des BesuchersBrowser-Cache
──────▶① Erste AnfrageGET /style.css
🖥️ WebserverNginx + Apache
💻 Computer des BesuchersBrowser-Cache
◀──────② Datei + Speicheranweisungcache-control: max-age=604800
🖥️ WebserverNginx + Apache
③ Der Browser speichert sie wie angewiesen 7 Tage lang und schickt bei Besuchen in dieser Zeit keine Anfrage an den Server.
💻 Computer des BesuchersBrowser-Cache
──────▶④ Prüfung nach AblaufIf-None-Match: "6ab12775-2ee8"
🖥️ WebserverNginx + Apache
💻 Computer des BesuchersBrowser-Cache
◀──────⑤ UnverändertHTTP/2 304 (ohne Body)
🖥️ WebserverNginx + Apache
🖼️ CSS · Bilder
cache-control: max-age=604800
expires: Sat, 17 Oct 2026 03:21:00 GMT
etag: "6ab12775-2ee8"
Fetch Priority ist das 7 Tage lang nutzt der Browser die gespeicherte Kopie, ohne den Server erneut zu fragen.
📄 HTML-Seite
etag: "6ac9298c-95575"
last-modified: Fri, 09 Oct 2026 17:51:08 GMT
Keine Speicherdauer vorgegeben, daher fragt der Browser beim nächsten Besuch zuerst mit dem ETag, ob sich etwas geändert hat.
Bei einer erneuten Anfrage mit demselben ETag antwortet der Server ohne Body nur mit [HTTP/2 304], und der Browser nutzt seine gespeicherte Kopie weiter.

2️⃣ CDN · Proxy-Cache

CDN- und Proxy-Caches liegen zwischen Besuchern und Ursprungsserver und werden von vielen Besuchern gemeinsam genutzt. Ein Forward Proxy sitzt auf der Seite des Besuchers, etwa in einem Firmennetz, während Reverse Proxys und CDNs vor dem Server sitzen und anstelle des Ursprungsservers mit einer gespeicherten Kopie antworten.

Ein typischer Reverse Proxy ist Varnish Cache, und CDNs wie Bunny CDN und Akamai folgen demselben Aufbau. Mit regionalem DNS lassen sich Besucher aus der Region des Ursprungsservers direkt mit ihm verbinden, während Besucher aus anderen Regionen die Antwort von einem nahen CDN-Edge (z. B. Bunny CDN) bekommen, der sogar das HTML speichert.

👤 Besucher aus der Region des UrsprungsserversDNS liefert die Ursprungsadresse
→
🖥️ UrsprungsserverAntwortet direkt, ohne über das CDN zu gehen.
👤 Besucher aus einer anderen RegionDNS liefert die Adresse eines nahen Edge
→
☁️ Bunny CDN EdgeHat er eine Kopie von HTML oder Datei, antwortet er hier.
→
🖥️ UrsprungsserverWird nur erreicht, wenn der Edge keine Kopie hat.

Aufbau und Vorteile eines CDN sind im Beitrag Was ist ein CDN? Gründe für ein CDN und 5 Vorteile zusammengefasst.

Ⅲ. Serverseitiger Cache

Serverseitiger Cache ist der Cache, der am Ablauf hängt, mit dem WordPress eine Seite erzeugt, nachdem die Anfrage beim Ursprungsserver angekommen ist. Ein Server mit Nginx + Apache bearbeitet Anfragen in der Reihenfolge unten; findet ein früherer Schritt eine Kopie, entfallen die späteren.

🅐 Wenn der Seiten-Cache die Datei hatDie meisten Seitenanfragen von nicht eingeloggten Besuchern
① nginx nimmt die Anfrage anDer Webserver nimmt die Anfrage an, die beim Ursprungsserver angekommen ist.
↓
1️⃣ Seiten-Cache ↓② Antwort mit der Seiten-Cache-Dateinginx schickt die von WP Rocket erzeugte HTML-Datei unverändert.x-rocket-nginx-serving-file: HIT
Endet, ohne PHP · OPcache · Redis · MariaDB zu durchlaufen.
🅑 Wenn der Seiten-Cache keine Datei hatErster Besuch direkt nach dem Leeren des Caches · Login-Seite · AJAX-Anfragen
① nginx nimmt die Anfrage anKeine Datei vorhanden, also geht es weiter an Apache.
↓
2️⃣ OPcache ↓② PHP läuft · OPcacheFührt die PHP-Dateien von WordPress als kompilierten Bytecode aus.
↓
3️⃣ Objekt-Cache ↓③ Objekt-Cache (Redis)Gespeicherte Abfrageergebnisse und Objekte kommen aus Redis.
↓
④ MariaDBFragt nur Daten ab, die nicht in Redis liegen; häufig genutzte Daten liest es aus dem InnoDB-Pufferpool (Speicher).
↓
⑤ Antwort · Seiten-Cache gespeichertSchickt das fertige HTML, und WP Rocket speichert es als Datei, sodass die nächste Anfrage als 🅐 läuft.
Bezogen auf ein Nginx + Apache-Setup (übergibt nur an Apache und PHP, wenn keine Seiten-Cache-Datei da ist), geprüft am 2026-10-10.

Ein Nginx + Apache-Setup kannst du bei Cloudways und ScalaHosting als Option wählen. Bei Cloudways wählst du pro Anwendung entweder den Hybrid-Stack (Nginx + Apache) oder den Lightning-Stack (nur Nginx), und bei ScalaHosting kannst du in SPanel eine Einstellung einschalten, die Nginx vor Apache setzt.

🖥️ Hoster, bei denen du Nginx + Apache wählen kannst
CloudwaysStack-Wahl pro Anwendung
Hybrid-StackNginx + Apache
Lightning-StackNur Nginx
Cloudways →
ScalaHostingWebserver-Einstellungen in SPanel
StandardApache
Nginx einschaltenNginx + Apache
ScalaHosting →
CacheWas gespeichert wirdWann gespeichert wird
1️⃣ Seiten-CacheFertige HTML-Seite🅑 ⑤ Beim Antworten speichert WP Rocket sie als Datei
2️⃣ OPcacheKompilierter PHP-Code (Bytecode)🅑 ② Wenn eine PHP-Datei zum ersten Mal läuft
3️⃣ Objekt-CacheDatenstücke wie Abfrageergebnisse und Optionen🅑 ③ Wenn WordPress die Daten zum ersten Mal holt

1️⃣ Seiten-Cache

  • ↪️ Full-Page-Cache oder HTML-Cache

Der Seiten-Cache heißt auch Full-Page-Cache, und weil er HTML speichert, manchmal HTML-Cache. Er legt die ganze von PHP erzeugte Webseite als statische HTML-Datei ab und schickt diese Datei bei derselben Seitenanfrage, ohne PHP auszuführen. Das ist Fall 🅐 im Ablauf oben.

Gespeichert wird im Arbeitsspeicher (RAM) oder auf der Festplatte (HDD/SSD) des Servers: Speicher ist schnell, aber teuer und begrenzt, die Festplatte hat viel Platz, ist aber vergleichsweise langsam.

ArtBeispielWie gespeichert und geantwortet wird
Caching-PluginWP Rocket · WP Super Cache · W3 Total Cache · Cache EnablerWordPress speichert die Seite als HTML-Datei, und der Webserver schickt diese Datei.
Webserver-CacheNginx FastCGI Cache · LiteSpeed CacheDer Webserver speichert die PHP-Antwort selbst und schickt sie bei der nächsten Anfrage.
Reverse-Proxy-CacheVarnishEin Cache-Server vor dem Webserver speichert die Seite und antwortet.

Bei Nginx + Apache liest nginx die von WP Rocket erzeugte HTML-Datei direkt und schickt sie, und der Antwort-Header bekommt [x-rocket-nginx-serving-file: HIT]. Wie du den Seiten-Cache mit WP Rocket einschaltest und einrichtest, ist im Beitrag WP Rocket Anleitung zusammengefasst.

2️⃣ OPcache

OPcache speichert vorab zu Bytecode kompilierten PHP-Code im Speicher, sodass beim erneuten Ausführen derselben Datei der PHP-Parser entfällt. Er ist seit PHP 5.5 eingebaut; die früher genutzten APC und XCache unterstützen PHP 7 nicht und werden heute nicht mehr verwendet. Das ist Schritt ② von 🅑 im Ablauf oben.

ArtStatusBeschreibung
Zend OPcacheSeit PHP 5.5 eingebautDer heute übliche Standard-Opcode-Cache, eingeschaltet mit [opcache.enable=1].
OPcache JITSeit PHP 8 in OPcache enthaltenWandelt Bytecode noch einmal in Maschinencode um und führt ihn aus; ein- und ausgeschaltet mit [opcache.jit].
APCEingestelltDer Opcode-Cache vor OPcache; seine Daten-Cache-Funktion lebt in APCu weiter.
XCacheEingestelltUnterstützt PHP 7 nicht.
WinCacheFür Windows-Server (IIS)Ein Opcode-Cache, den die offizielle WordPress-Dokumentation neben OPcache nennt.

OPcache schaltest du mit der PHP-Einstellung [opcache.enable=1] ein, und das mit PHP 8 hinzugekommene JIT lässt sich mit [opcache.jit=disable] separat abschalten. Installation und Einrichtung sind im Beitrag Zend OPcache: Konzept, Installation und Einrichtung beschrieben.

3️⃣ Objekt-Cache

Der Objekt-Cache speichert Ergebnisse von Datenbankabfragen oder berechnete Objekte in einem Speicher wie Redis oder Memcached. Standardmäßig merkt sich WordPress Objekte nur innerhalb einer einzelnen Anfrage; erst mit einem Speicher wie Redis bleiben die Ergebnisse nach der Anfrage erhalten. Das ist Schritt ③ von 🅑 im Ablauf oben.

ArtArtBleibt nach der Anfrage erhalten?Beschreibung
WP_Object_CacheWordPress-StandardNeinEin eingebauter Cache, der sich nur innerhalb einer Anfrage etwas merkt.
RedisObjekt-CacheJaEin eigener Speicher, angebunden über das Drop-in des Plugins Redis Object Cache.
MemcachedObjekt-CacheJaEin eigener Speicher.
APCuObjekt-CacheJa (innerhalb desselben Servers)Speichert im gemeinsamen Speicher, den PHP nutzt.
DateiObjekt-CacheJaSpeichert als Dateien auf der Festplatte.
InnoDB-PufferpoolEigener Cache der Datenbank · kein Objekt-CacheJaMySQL und MariaDB halten Tabellendaten und Indizes im Speicher.
Query-CacheEigener Cache der Datenbank · kein Objekt-Cache—In MySQL 8.0 entfernt; in MariaDB noch vorhanden, aber standardmäßig aus.

WordPress verbindet sich über die Drop-in-Datei ([object-cache.php]), die das Plugin Redis Object Cache anlegt, mit Redis. Die Installation ist im Beitrag Redis Cache für WordPress installieren und einrichten beschrieben.

🔢 FAQ & empfohlene Inhalte

Dann antwortet eine alte Kopie im Seiten-Cache oder im CDN. Leere im Caching-Plugin den Cache dieses Beitrags und, falls du ein CDN nutzt, auch die CDN-Kopie.

Seiten-Cache-Plugins wie WP Rocket schicken eingeloggten Benutzern standardmäßig keine gespeicherten Seiten. Admin-Bereich und Seiten im eingeloggten Zustand erzeugt PHP jedes Mal neu; dann sorgen OPcache und Objekt-Cache für Tempo.

Drücke in Chrome [Strg+Umschalt+R] (auf dem Mac [Cmd+Umschalt+R]), um die aktuelle Seite ohne Cache neu zu laden. Den gesamten Cache löschst du oben rechts über [Weitere] → [Browserdaten löschen] mit [Bilder und Dateien im Cache].

💾 Beiträge rund um Cache 10 Beiträge
🗂️ Cache
📋 Cache: Definition und alle Bereiche 📄 Website-Cache & serverseitiger Cache
📋 WP Rocket Anleitung 📝 Zend OPcache 📝 Redis Cache installieren
📝 Was ist ein CDN? 📝 Varnish Cache
📋 WP Rocket Speed-Test 📝 Beispiele für mehr Tempo 📝 Cache- und Optimierungs-Plugins

ℹ️ Affiliate-Hinweis
Die Inhalte dieser Website enthalten Affiliate-Links. Kauft ein Besucher über einen dieser Links ein Produkt oder eine Dienstleistung, erhält die Website vom Verkäufer eine Provision. Der Betrag, den der Käufer zahlt(bei Aktionsrabatten sinkt er ↓), steigt dadurch nicht. Angegebene Preise, Rabatte und Lagerbestände entsprechen dem Stand bei Erstellung und können abweichen; prüfe sie daher vor dem Kauf beim Verkäufer. Produkte werden nach eigenen Kriterien ausgewählt und bewertet, und Provisionen beeinflussen weder die Reihenfolge noch den Inhalt der Bewertungen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Beweisen Sie, dass Sie ein Mensch sind: 3   +   3   =