Caching ist die wirkungsvollste Methode zur Beschleunigung von Websites. Durch geschicktes Zwischenspeichern von Daten auf verschiedenen Ebenen können Ladezeiten um 50 bis 90 Prozent reduziert werden. Dieser Guide erklärt alle Caching-Ebenen im Detail und zeigt, wie Sie jede davon optimal konfigurieren.
Was ist Caching und warum ist es so wichtig?
Caching bedeutet, häufig benötigte Daten zwischenzuspeichern, um sie schneller abrufen zu können. Statt bei jedem Seitenaufruf die Datenbank abzufragen, PHP-Code auszuführen und HTML zu generieren, wird das fertige Ergebnis gespeichert und direkt ausgeliefert. Dies reduziert Serverlast, Bandbreite und Ladezeiten drastisch.
Die Caching-Ebenen im Überblick
| Ebene | Speicherort | Typische Zeitersparnis | Komplexität |
|---|---|---|---|
| Browser-Cache | Beim Besucher | 80-100% (bei Wiederbesuch) | Niedrig |
| CDN-Cache | Edge-Server weltweit | 40-70% | Niedrig |
| Reverse-Proxy-Cache | Vor dem Webserver | 60-90% | Mittel |
| Page-Cache | Webserver/Dateisystem | 70-95% | Niedrig-Mittel |
| OPcache | PHP-Prozess | 30-50% | Niedrig |
| Object-Cache | RAM (Redis/Memcached) | 20-40% | Mittel |
| Datenbank-Cache | DB-Server RAM | 10-30% | Mittel-Hoch |
Browser-Caching: Die erste Verteidigungslinie
Browser-Caching speichert statische Ressourcen (Bilder, CSS, JavaScript) direkt im Browser des Besuchers. Bei einem erneuten Besuch müssen diese Dateien nicht erneut vom Server geladen werden.
Cache-Control-Header konfigurieren
Die wichtigsten HTTP-Header für Browser-Caching sind:
- Cache-Control: max-age=31536000 – Datei wird 1 Jahr gecacht
- Cache-Control: no-cache – Browser muss beim Server nachfragen
- Cache-Control: no-store – Kein Caching (sensible Daten)
- ETag – Fingerprint der Datei für Validierung
- Last-Modified – Zeitpunkt der letzten Änderung
Empfohlene Cache-Zeiten nach Dateityp
| Dateityp | Empfohlene Cache-Zeit | Begründung |
|---|---|---|
| Bilder (JPG, PNG, WebP) | 1 Jahr | Ändern sich selten |
| CSS-Dateien | 1 Jahr (mit Cache-Busting) | Versionierung über Dateinamen |
| JavaScript-Dateien | 1 Jahr (mit Cache-Busting) | Versionierung über Dateinamen |
| Schriftarten | 1 Jahr | Ändern sich praktisch nie |
| HTML-Seiten | 0-5 Minuten | Sollten aktuell sein |
| API-Antworten | 0-60 Sekunden | Abhängig von Aktualitätsanforderung |
Cache-Busting: Aktualisierungen trotz langer Cache-Zeiten
Wenn Sie statische Dateien mit langen Cache-Zeiten ausliefern, benötigen Sie eine Strategie für Updates. Die gängigste Methode ist Cache-Busting durch Versionierung im Dateinamen oder als Query-Parameter, zum Beispiel style.v2.css oder style.css?v=1234.
Server-seitiges Page-Caching
Page-Caching speichert die komplette HTML-Ausgabe einer Seite. Bei folgenden Aufrufen wird das gespeicherte HTML direkt ausgeliefert, ohne PHP oder die Datenbank zu bemühen. Dies ist besonders für CMS-Websites wie WordPress, Joomla oder TYPO3 wichtig – welches System am besten zu Ihnen passt, erfahren Sie im CMS-Vergleich.
Page-Cache-Lösungen
- WordPress: WP Super Cache, W3 Total Cache, WP Rocket
- Joomla: Integriertes Page-Caching (konservativ/progressiv)
- TYPO3: Eingebautes Caching-Framework mit verschiedenen Backends
- Allgemein: Varnish als Reverse-Proxy vor dem Webserver
Wann Page-Caching nicht funktioniert
- Seiten mit personalisierten Inhalten (eingeloggte Nutzer)
- Dynamische Seitenelemente (Warenkorb-Anzeige)
- Seiten mit Echtzeit-Daten
- Formulare mit CSRF-Token
Für diese Fälle können Sie Fragment-Caching oder Edge-Side-Includes (ESI) verwenden, bei denen nur Teile der Seite gecacht werden.
OPcache: PHP-Code im Speicher
OPcache speichert kompilierten PHP-Bytecode im Arbeitsspeicher. Ohne OPcache muss PHP bei jedem Aufruf den Quellcode neu parsen und kompilieren. Die Aktivierung von OPcache ist die einfachste und wirkungsvollste PHP-Optimierung. Weitere Details finden Sie in unserem Artikel zur PHP-Performance-Optimierung.
Optimale OPcache-Konfiguration
| Einstellung | Entwicklung | Produktion |
|---|---|---|
| opcache.enable | 1 | 1 |
| opcache.memory_consumption | 128 | 256 |
| opcache.max_accelerated_files | 10000 | 20000 |
| opcache.validate_timestamps | 1 | 0 |
| opcache.revalidate_freq | 0 | - (deaktiviert) |
| opcache.interned_strings_buffer | 16 | 32 |
Object-Caching mit Redis oder Memcached
Object-Caching speichert Datenbankabfragen und berechnete Objekte im Arbeitsspeicher. Dies ist besonders effektiv für datenbankintensive Anwendungen. Redis und Memcached sind die beiden führenden In-Memory-Datenspeicher für diesen Zweck.
Redis vs. Memcached
| Merkmal | Redis | Memcached |
|---|---|---|
| Datenstrukturen | Vielfältig (Strings, Lists, Sets, Hashes) | Nur Strings |
| Persistenz | Optional (Disk-Snapshots) | Nur RAM |
| Replikation | Master-Slave unterstützt | Nicht nativ |
| Speichereffizienz | Gut | Etwas besser bei reinen Key-Value |
| Eignung für Sessions | Sehr gut | Gut |
| Empfehlung | Standard-Wahl | Für einfache Szenarien |
Für den Einsatz von Redis oder Memcached benötigen Sie einen Server mit Root-Zugriff, wie einen vServer oder Root-Server. Auf Shared Hosting stehen diese Technologien meist nicht zur Verfügung.
CDN-Caching
Ein Content Delivery Network cached Ihre Inhalte auf Servern weltweit und liefert sie vom nächstgelegenen Standort aus. Dies kombiniert Caching mit geografischer Verteilung für maximale Geschwindigkeit. Ausführliche Informationen finden Sie in unserem Artikel über CDN-Grundlagen.
Reverse-Proxy-Caching mit Varnish
Varnish ist ein HTTP-Beschleuniger, der als Reverse-Proxy vor Ihrem Webserver sitzt. Er cached komplette HTTP-Antworten im RAM und kann Tausende Anfragen pro Sekunde bedienen, ohne den eigentlichen Webserver zu belasten.
Vorteile von Varnish
- Extrem schnelle Auslieferung aus dem Arbeitsspeicher
- Konfigurierbare Cache-Regeln mit VCL (Varnish Configuration Language)
- Grace-Mode: Veralteten Cache ausliefern, während im Hintergrund aktualisiert wird
- Edge-Side-Includes für teilweises Caching
Datenbank-Caching
Die Datenbank selbst verfügt über eigene Caching-Mechanismen. MySQL/MariaDB nutzen den InnoDB Buffer Pool, um häufig gelesene Daten im RAM zu halten. Eine korrekte Konfiguration kann die Datenbankperformance um ein Vielfaches steigern. Details finden Sie in unserem Artikel zur Datenbank-Optimierung.
Caching-Strategie entwickeln
Die optimale Caching-Strategie kombiniert mehrere Ebenen und berücksichtigt die spezifischen Anforderungen Ihrer Website.
Empfohlene Konfiguration nach Website-Typ
| Website-Typ | Empfohlene Caching-Ebenen |
|---|---|
| Statische Website / Blog | Browser-Cache + CDN + Page-Cache |
| CMS-Website | Browser-Cache + Page-Cache + OPcache |
| Online-Shop | Browser-Cache + CDN + Object-Cache + OPcache |
| Web-Anwendung | Browser-Cache + Object-Cache + API-Cache + OPcache |
| High-Traffic-Portal | Alle Ebenen inkl. Varnish und Redis |
| Headless-CMS-Projekt | CDN + API-Cache + Edge-Caching |
Cache-Invalidierung: Das schwierigste Problem
Phil Karlton sagte: Es gibt nur zwei schwierige Probleme in der Informatik – Cache-Invalidierung und die Benennung von Dingen. Die korrekte Invalidierung (Entwertung) von Caches ist entscheidend, damit Besucher aktuelle Inhalte sehen.
Strategien zur Cache-Invalidierung
- Zeitbasiert (TTL): Cache läuft nach definierter Zeit ab
- Event-basiert: Cache wird bei Content-Änderung gelöscht
- Tag-basiert: Caches werden mit Tags versehen und gruppenweise invalidiert
- Versionierung: Neue URL bei neuer Version (Cache-Busting)
Fazit: Caching richtig einsetzen
Effektives Caching ist die Kombination mehrerer Ebenen. Beginnen Sie mit Browser-Caching und OPcache als Grundlage – vorausgesetzt, Ihre Website ist per SSL-Zertifikat abgesichert, um HTTP/2-Vorteile nutzen zu können. Fügen Sie dann Page-Caching für Ihre CMS-Seiten hinzu. Für wachsende Projekte investieren Sie in Object-Caching mit Redis und ein CDN. Überwachen Sie die Ergebnisse mit den in unserem Performance-Guide empfohlenen Tools und passen Sie Ihre Strategie kontinuierlich an. Die richtige Caching-Strategie macht aus einer langsamen Website eine blitzschnelle – und das oft ohne eine einzige Zeile Code zu ändern.
Häufig gestellte Fragen
Was ist der Unterschied zwischen Browser-Cache und Server-Cache?
Der Browser-Cache speichert Dateien wie Bilder, CSS und JavaScript lokal auf dem Gerät des Besuchers, sodass sie beim nächsten Besuch nicht erneut heruntergeladen werden müssen. Der Server-Cache speichert fertig generierte HTML-Seiten oder Datenbankabfragen auf dem Server, um die Verarbeitungszeit zu reduzieren.
Wie lange sollte ich Cache-Ablaufzeiten setzen?
Für statische Ressourcen wie Bilder, Schriften und versionierte CSS/JS-Dateien empfehlen sich lange Ablaufzeiten von einem Jahr. Für HTML-Seiten sollten kürzere Zeiten von wenigen Minuten bis Stunden gewählt werden, damit Änderungen zeitnah sichtbar werden.
Was ist Cache-Invalidierung und warum ist sie schwierig?
Cache-Invalidierung bedeutet, veraltete Cache-Einträge gezielt zu löschen, damit Besucher aktuelle Inhalte sehen. Sie ist schwierig, weil Caches auf vielen Ebenen existieren und eine Änderung alle betroffenen Ebenen erreichen muss. Strategien wie Cache-Busting mit Versionsnummern in Dateinamen lösen dieses Problem elegant.
Brauche ich Redis oder Memcached für meine Website?
Redis oder Memcached lohnen sich vor allem bei dynamischen Websites mit vielen Datenbankabfragen, zum Beispiel WooCommerce-Shops oder stark besuchte WordPress-Seiten. Für einfache Blogs oder statische Seiten reichen Browser-Cache und Page-Cache in der Regel aus.
Kann Caching Probleme verursachen?
Ja, falsches Caching kann dazu führen, dass Besucher veraltete Inhalte sehen oder personalisierte Seiten falsch ausgeliefert werden. Eingeloggte Nutzer sollten vom Page-Cache ausgeschlossen werden, und bei Content-Änderungen muss der Cache gezielt geleert werden.