Caching-Strategien für Webseiten: Jede Ebene optimal nutzen

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

EbeneSpeicherortTypische ZeitersparnisKomplexität
Browser-CacheBeim Besucher80-100% (bei Wiederbesuch)Niedrig
CDN-CacheEdge-Server weltweit40-70%Niedrig
Reverse-Proxy-CacheVor dem Webserver60-90%Mittel
Page-CacheWebserver/Dateisystem70-95%Niedrig-Mittel
OPcachePHP-Prozess30-50%Niedrig
Object-CacheRAM (Redis/Memcached)20-40%Mittel
Datenbank-CacheDB-Server RAM10-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

DateitypEmpfohlene Cache-ZeitBegründung
Bilder (JPG, PNG, WebP)1 JahrÄndern sich selten
CSS-Dateien1 Jahr (mit Cache-Busting)Versionierung über Dateinamen
JavaScript-Dateien1 Jahr (mit Cache-Busting)Versionierung über Dateinamen
Schriftarten1 JahrÄndern sich praktisch nie
HTML-Seiten0-5 MinutenSollten aktuell sein
API-Antworten0-60 SekundenAbhä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

EinstellungEntwicklungProduktion
opcache.enable11
opcache.memory_consumption128256
opcache.max_accelerated_files1000020000
opcache.validate_timestamps10
opcache.revalidate_freq0- (deaktiviert)
opcache.interned_strings_buffer1632

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

MerkmalRedisMemcached
DatenstrukturenVielfältig (Strings, Lists, Sets, Hashes)Nur Strings
PersistenzOptional (Disk-Snapshots)Nur RAM
ReplikationMaster-Slave unterstütztNicht nativ
SpeichereffizienzGutEtwas besser bei reinen Key-Value
Eignung für SessionsSehr gutGut
EmpfehlungStandard-WahlFü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-TypEmpfohlene Caching-Ebenen
Statische Website / BlogBrowser-Cache + CDN + Page-Cache
CMS-WebsiteBrowser-Cache + Page-Cache + OPcache
Online-ShopBrowser-Cache + CDN + Object-Cache + OPcache
Web-AnwendungBrowser-Cache + Object-Cache + API-Cache + OPcache
High-Traffic-PortalAlle Ebenen inkl. Varnish und Redis
Headless-CMS-ProjektCDN + 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.


Weitere Artikel in „Performance & Optimierung“

Website Performance optimieren: So wird Ihre Seite blitzschnell

Website-Performance verbessern: Ladezeiten optimieren, Core Web Vitals erfüllen und Besucher begeist…

CDN Grundlagen: Content Delivery Networks für schnellere Websites

Was ist ein CDN? Wie funktioniert es? Vorteile, Nachteile, Anbieter und Einrichtung von Content Deli…

PHP Performance-Optimierung: Schnellere Websites durch optimales PHP

PHP-Performance optimieren: OPcache, PHP-FPM, Code-Optimierung, Profiling und Best Practices für sch…

Datenbank-Optimierung: MySQL & MariaDB für maximale Performance

MySQL und MariaDB Performance optimieren: Konfiguration, Indizes, Queries, Buffer Pool und Wartung f…