Modul 6 · 6.2
Deutsch
Caching
Modul 6: Geschwindigkeit · Lesezeit: 9 Minuten
Lernziel: Nach dieser Lektion können Sie erklären, welche Arten von Cache es gibt, und eine Seiten-Cache richtig einstellen und kontrollieren.
Kernbegriffe: Seiten-Cache, Browser-Cache, Cache-Control, Objekt-Cache, Redis, OPcache, CDN, Cache-Plugin, LiteSpeed Cache, Ausnahmen (eingeloggt, Warenkorb, Kasse), Cache leeren, doppelte Cache-Plugins
Cache: Arbeit nicht zweimal erledigen
Ein Cache speichert das Ergebnis von Arbeit, damit sie beim nächsten Mal nicht erneut erledigt werden muss. Bei einer WordPress-Website gibt es vier Stellen, an denen das geschieht, von groß nach klein:
| Art | Was wird gespeichert | Wo | Effekt |
|---|---|---|---|
| Seiten-Cache | Das komplette HTML einer Seite | Auf dem Server (oder bei einem CDN) | Der größte Gewinn: PHP, Plugins und Datenbank werden übersprungen |
| Browser-Cache | Stylesheets, Scripts, Bilder, Schriftarten | Im Browser des Besuchers | Eine zweite Seite lädt schneller, weil die Dateien bereits vorhanden sind |
| Objekt-Cache | Ergebnisse von Datenbankabfragen | Im Arbeitsspeicher des Servers (Redis, Memcached) | Hilft, wo eine Seiten-Cache nicht helfen kann, etwa bei eingeloggten Nutzern und Webshops |
| OPcache | Der übersetzte PHP-Code | Im Arbeitsspeicher von PHP | PHP muss Dateien nicht bei jeder Anfrage erneut lesen; ist bei den meisten Hostern standardmäßig aktiv |
Die Seiten-Cache
Lektion 1.2 hat es gezeigt: ohne Cache erstellt WordPress bei jedem Besuch die gesamte Seite neu. Mit einer Seiten-Cache erstellt der erste Besucher sie, und die folgenden erhalten das gespeicherte HTML. Eine TTFB von einer Sekunde kann so auf ein paar Hundertstelsekunden sinken, und Ihr Paket kann deutlich mehr Besucher gleichzeitig bewältigen.
Wie Sie eine Seiten-Cache bekommen, hängt von Ihrem Webserver ab:
- LiteSpeed (viele Shared-Hosting-Angebote, darunter WebOké): Der Webserver hat selbst eine Cache. Das kostenlose Plugin LiteSpeed Cache steuert sie von WordPress aus: welche Seiten in die Cache dürfen, wann sie geleert wird. Weil die Cache im Webserver liegt, wird PHP für eine gespeicherte Seite überhaupt nicht gestartet.
- Apache oder nginx: ein Cache-Plugin, das das HTML als Dateien speichert, wie WP Super Cache, W3 Total Cache oder ein kostenpflichtiges Plugin wie WP Rocket. Oder eine Cache, die der Hoster auf Serverebene regelt.
- Managed WordPress-Hosting hat oft eine eigene Cache; dort installieren Sie meist kein Cache-Plugin.
Wählen Sie eines. Zwei Cache-Plugins gleichzeitig (zum Beispiel LiteSpeed Cache und WP Rocket) behindern sich gegenseitig: doppelte Arbeit, Seiten, die nicht geleert werden, merkwürdige Fehler. Auf einem LiteSpeed-Server arbeitet LiteSpeed Cache mit der Cache des Webservers zusammen; ein anderes Cache-Plugin kann das nicht.
Was nicht in die Cache darf
Eine Seiten-Cache gibt jedem dasselbe HTML. Das geht schief bei Seiten, die sich je nach Besucher unterscheiden:
- eingeloggte Nutzer (die Admin-Leiste, „Willkommen, Lisa“);
- der Warenkorb, die Kasse und Mein Konto bei einem Webshop;
- Seiten mit einem Formular mit einem einmaligen Code (Nonce), der nach einer Weile abläuft;
- Seiten, die je nach Standort, Sprache oder einem Cookie etwas anderes anzeigen.
Gute Cache-Plugins überspringen eingeloggte Nutzer und die bekannten WooCommerce-Seiten automatisch. Bei anderen Plugins (ein Mitgliederbereich, ein Buchungssystem) müssen Sie selbst Ausnahmen einstellen. Das Zeichen, dass es schiefgeht: ein Besucher sieht den Warenkorb von jemand anderem, oder ein Formular meldet „abgelaufen“ oder „ungültige Anfrage“.
Leeren: wann ist die Cache veraltet?
Passen Sie eine Seite an, muss die gespeicherte Version weg. Cache-Plugins leeren beim Speichern eines Beitrags meist diese Seite, die Startseite und die Archive. Bei einer Änderung am Menü, am Theme oder an einem Widget muss oft die gesamte Cache geleert werden. Sehen Sie nach einer Änderung noch die alte Version, leeren Sie die Cache (in der Admin-Leiste des Cache-Plugins) und kontrollieren Sie es in einem privaten Fenster, damit Ihr eigener Browser-Cache nicht dazwischenfunkt.
Die Browser-Cache
Der Server teilt dem Browser über Header mit, wie lange er eine Datei aufbewahren darf:
cache-control: public, max-age=31536000Das bedeutet: diese Datei ein Jahr lang aufbewahren. Für Stylesheets, Scripts, Schriftarten und Bilder ist eine lange Zeit unproblematisch, weil WordPress bei einer neuen Version ein anderes ?ver= hinter die Adresse setzt und der Browser es dann als neue Datei betrachtet. Für das HTML selbst ist eine kurze Zeit (oder keine) üblich, damit Besucher Änderungen schnell sehen.
Viele Hoster und Cache-Plugins regeln das. In der Aufgabe dieser Lektion kontrollieren Sie es.
Objekt-Cache und Redis
Eine Seiten-Cache hilft nicht bei eingeloggten Nutzern und nicht beim Warenkorb. Dort hilft ein Objekt-Cache: WordPress speichert das Ergebnis von Datenbankabfragen im Arbeitsspeicher, in einem Programm wie Redis oder Memcached. Kommt die nächste Mal dieselbe Abfrage, holt WordPress die Antwort aus dem Arbeitsspeicher statt aus der Datenbank.
Das ist vor allem nützlich für Webshops, Mitgliederseiten und Websites mit vielen eingeloggten Redakteuren. Für eine gewöhnliche Informationsseite mit Seiten-Cache ist der Unterschied gering. Ein Objekt-Cache setzt voraus, dass Ihr Hoster Redis oder Memcached anbietet; danach schalten Sie es mit einem Plugin ein (LiteSpeed Cache kann das, es gibt auch eigenständige Plugins).
Ein CDN
Ein CDN (Content Delivery Network) ist ein Netzwerk von Servern an vielen Orten der Welt, die Kopien Ihrer Dateien (und manchmal Ihrer ganzen Seiten) speichern. Ein Besucher erhält sie vom nächstgelegenen Server. Das hilft vor allem bei weit entfernten Besuchern und bei viel Datenverkehr. Für eine europäische Website mit europäischen Besuchern auf einem europäischen Server ist der Gewinn gering. Ein CDN mit Proxy (wie Cloudflare) ändert auch Ihr DNS und Ihr Zertifikat (DNS-Kurs Lektion 7.5); tun Sie das nicht, ohne zu verstehen, was es bewirkt.
In der Praxis: so sieht es in einem Panel aus
Als Beispiel verwenden wir LiteSpeed Cache auf einem LiteSpeed-Server. Andere Cache-Plugins haben vergleichbare Einstellungen unter anderen Namen.
- Installieren und aktivieren Sie LiteSpeed Cache unter Plugins > Installieren.
- Öffnen Sie LiteSpeed Cache > Cache: „Cache aktivieren“ ist eingeschaltet, „Eingeloggte Nutzer cachen“ ausgeschaltet (außer Sie wissen, was Sie tun).
- Bei einem Webshop: kontrollieren Sie unter Ausschließen, dass Warenkorb, Kasse und Mein Konto eingetragen sind (bei WooCommerce geschieht das automatisch).
- Lassen Sie die übrigen Bestandteile (Optimierung von CSS und JavaScript, Bilder) zunächst ausgeschaltet. Schalten Sie sie einzeln ein und testen Sie nach jedem Schritt: gerade diese Bestandteile bringen manchmal ein Theme durcheinander.
- Kontrollieren Sie in einem privaten Fenster mit den Entwicklertools (F12, Netzwerk, erste Anfrage): beim zweiten Laden sollte
x-litespeed-cache: hiterscheinen.
Zusammenfassung
- Es gibt vier Arten von Cache: Seite (der größte Gewinn), Browser, Objekt und OPcache.
- Auf einem LiteSpeed-Server steuert LiteSpeed Cache die Cache des Webservers; auf Apache oder nginx verwenden Sie ein anderes Cache-Plugin. Wählen Sie eines.
- Eingeloggte Nutzer, Warenkorb, Kasse und persönliche Seiten gehören nicht in die Seiten-Cache.
- Leeren Sie die Cache nach Änderungen am Menü oder Theme und kontrollieren Sie es in einem privaten Fenster.
- Ein Objekt-Cache (Redis) hilft bei Webshops und eingeloggten Nutzern; ein CDN vor allem bei weiter Entfernung und viel Datenverkehr.
Quiz
Aufgabe
Aufgabe A6.2: Funktioniert Ihre Seiten-Cache? Geben Sie die Adresse Ihrer Website ein. Das Programm ruft die Startseite zweimal kurz hintereinander auf, ohne Cookies, und prüft beim zweiten Mal die Header, die einen Cache-Treffer anzeigen (x-litespeed-cache: hit, x-cache: HIT, cf-cache-status: HIT, ein age größer als 0, oder der Header einer anderen bekannten Cache). Danach ruft es ein Stylesheet aus der Startseite ab und prüft, ob der Browser es mindestens sieben Tage aufbewahren darf (cache-control: max-age oder expires). Notieren Sie, welche Cache Sie verwenden.
Weiterführende Informationen
Diese Artikel beschreiben die Schritte in den Panels von WebOké; in anderen Panels funktionieren sie ähnlich.
- DirectAdmin Anleitung 18.3: Meine Website ist langsam
- DirectAdmin Anleitung 15.7: Redis
- Meine Website ist langsam oder nutzt zu viel CPU: So machen Sie sie schneller
- OPcache: 30 Sekunden Verzögerung beim Ändern einer PHP-Datei
- Ist gzip in DirectAdmin und LiteSpeed oder Apache aktiviert?
- Cache in WordPress (developer.wordpress.org, Englisch): https://developer.wordpress.org/advanced-administration/performance/cache/
