Bis zu 90% schnellere Ladezeiten für wiederkehrende Besucher
Browser-Caching speichert Dateien lokal beim Besucher – CSS, JavaScript, Bilder und Schriften müssen nicht bei jedem Besuch neu geladen werden. Das Ergebnis: Deutlich schnellere Ladezeiten und weniger Server-Last. In diesem Leitfaden zeigen wir Ihnen, wie Sie Browser-Caching nutzen und richtig konfigurieren.
Was ist Browser-Caching?
Wenn jemand Ihre Website besucht, lädt der Browser alle Ressourcen herunter: HTML, CSS, JavaScript, Bilder, Schriften usw. Bei Browser-Caching speichert der Browser diese Dateien lokal auf der Festplatte des Besuchers. Beim nächsten Besuch muss er sie nicht erneut vom Server laden – er nutzt einfach die gespeicherte Version.
Zweiter Besuch: 2,5 MB Download, 3,2 Sekunden Ladezeit
Dritter Besuch: 2,5 MB Download, 3,2 Sekunden Ladezeit
Zweiter Besuch: 45 KB Download, 0,4 Sekunden Ladezeit
Dritter Besuch: 45 KB Download, 0,4 Sekunden Ladezeit
Der Unterschied ist enorm: Statt 2,5 MB müssen nur noch 45 KB geladen werden – das ist eine Reduzierung um 98%. Für wiederkehrende Besucher bedeutet das nahezu sofortige Ladezeiten.
💡 Wichtig: Cache-Dauer richtig wählen
Browser-Caching für Apache (.htaccess)
Die meisten Webhoster nutzen Apache als Webserver. Die Caching-Konfiguration erfolgt über die .htaccess-Datei im Root-Verzeichnis Ihrer Website. Falls die Datei noch nicht existiert, erstellen Sie sie einfach.
# Browser-Caching aktivieren <IfModule mod_expires.c> ExpiresActive On # Standard-Cache: 1 Jahr für statische Assets ExpiresDefault "access plus 1 year" # HTML-Dateien: 1 Stunde (ändern sich häufig) ExpiresByType text/html "access plus 1 hour" # CSS und JavaScript: 1 Monat ExpiresByType text/css "access plus 1 month" ExpiresByType application/javascript "access plus 1 month" ExpiresByType text/javascript "access plus 1 month" # Bilder: 1 Jahr (ändern sich selten) ExpiresByType image/jpeg "access plus 1 year" ExpiresByType image/png "access plus 1 year" ExpiresByType image/webp "access plus 1 year" ExpiresByType image/svg+xml "access plus 1 year" ExpiresByType image/gif "access plus 1 year" ExpiresByType image/x-icon "access plus 1 year" # Schriften: 1 Jahr ExpiresByType font/woff "access plus 1 year" ExpiresByType font/woff2 "access plus 1 year" ExpiresByType application/font-woff "access plus 1 year" ExpiresByType application/font-woff2 "access plus 1 year" # Videos: 1 Jahr ExpiresByType video/mp4 "access plus 1 year" ExpiresByType video/webm "access plus 1 year" </IfModule> # Cache-Control Header setzen <IfModule mod_headers.c> # Für statische Dateien: öffentlich cachebar <FilesMatch "\.(jpg|jpeg|png|gif|webp|svg|css|js|woff|woff2)$"> Header set Cache-Control "public, max-age=31536000, immutable" </FilesMatch> # Für HTML: kürzerer Cache, Revalidierung nötig <FilesMatch "\.(html|htm)$"> Header set Cache-Control "public, max-age=3600, must-revalidate" </FilesMatch> </IfModule>
✓ So aktivieren Sie die .htaccess-Konfiguration
2. Öffnen Sie Ihre
.htaccess-Datei im Root-Verzeichnis (oder erstellen Sie sie)3. Fügen Sie den Code am Ende der Datei ein
4. Speichern Sie die Datei
5. Testen Sie die Funktionsweise (siehe unten)
Browser-Caching für Nginx
Wenn Ihr Webserver Nginx nutzt, erfolgt die Konfiguration in der Server-Block-Konfiguration. Diese befindet sich meist unter /etc/nginx/sites-available/.
server {
# ... Ihre anderen Einstellungen ...
# HTML-Dateien: kurzer Cache
location ~* \.html?$ {
expires 1h;
add_header Cache-Control "public, must-revalidate";
}
# CSS und JavaScript: mittlerer Cache
location ~* \.(css|js)$ {
expires 1M;
add_header Cache-Control "public, immutable";
}
# Bilder: langer Cache
location ~* \.(jpg|jpeg|png|gif|webp|svg|ico)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
# Schriften: langer Cache
location ~* \.(woff|woff2|ttf|otf|eot)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
# Videos: langer Cache
location ~* \.(mp4|webm|ogg)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
}
Nach Änderungen an der Nginx-Konfiguration müssen Sie den Server neu laden:
sudo systemctl reload nginx
oder (bei älteren Systemen):
sudo service nginx reload
Navigieren Sie zum Nginx-Installationsverzeichnis und führen Sie aus:
nginx.exe -s reload
sudo nginx -s reload
oder bei Installation via Homebrew:
brew services restart nginx
Optimale Cache-Dauern für verschiedene Dateitypen
- HTML (1 Stunde – 1 Tag): HTML-Dateien enthalten Ihre Inhalte und ändern sich häufig. Ein kurzer Cache stellt sicher, dass Besucher aktuelle Inhalte sehen.
- CSS & JavaScript (1 Woche – 1 Monat): Stylesheets und Scripts ändern sich bei Updates. Ein mittlerer Cache ist ideal – kombiniert mit Cache-Busting für Deployments.
- Bilder (6 Monate – 1 Jahr): Bilder ändern sich selten. Ein langer Cache reduziert Traffic erheblich. Neue Bilder bekommen meist neue Dateinamen.
- Schriften (1 Jahr): Webfonts ändern sich praktisch nie. Maximaler Cache ist hier perfekt.
- Videos (1 Jahr): Große Dateien, die sich selten ändern. Langer Cache spart enorm viel Bandbreite.
- Favicon (1 Jahr): Das Website-Icon ändert sich extrem selten. Kann problemlos lange gecacht werden.
📊 Praxis-Beispiel: WordPress-Blog
- Erster Besuch: 2,1 MB, 2,8 Sekunden
- Zweiter Besuch: 2,1 MB, 2,8 Sekunden
- Serverlast: 2,1 MB pro Besuch
Nachher (mit Caching):
- Erster Besuch: 2,1 MB, 2,8 Sekunden
- Zweiter Besuch: 38 KB, 0,3 Sekunden (nur HTML neu laden)
- Serverlast: 98% Reduktion bei wiederkehrenden Besuchern
Cache-Busting: Updates trotz langem Cache
Problem: Sie haben CSS-Dateien mit 1-Jahr-Cache konfiguriert. Jetzt ändern Sie das Design – aber Besucher sehen die alte Version aus dem Cache. Die Lösung heißt Cache-Busting.
Methode 1: Versionsnummer im Dateinamen
Statt style.css nutzen Sie style.v2.css. Bei jedem Update erhöhen Sie die Versionsnummer. Der Browser sieht einen neuen Dateinamen und lädt die Datei neu.
Methode 2: Query-String-Parameter
Nutzen Sie style.css?v=1.2.3 in Ihrem HTML. Bei Updates ändern Sie die Versionsnummer. Vorsicht: Manche Proxy-Server cachen Dateien mit Query-Strings nicht.
Methode 3: Hash im Dateinamen (beste Lösung)
Build-Tools wie Webpack oder Vite generieren automatisch Dateinamen mit Content-Hash: style.a3f2b9c1.css. Ändert sich der Inhalt, ändert sich der Hash – perfektes Cache-Busting.
⚠️ Häufiger Fehler: Query-Strings in .htaccess ignorieren
style.css?v=1 und style.css?v=2 werden als identisch behandelt. Nutzen Sie stattdessen echte Versionierung im Dateinamen oder konfigurieren Sie Ihren Server entsprechend.
Caching testen: Funktioniert es wirklich?
Nach der Konfiguration sollten Sie testen, ob Caching wirklich aktiv ist. Es gibt mehrere Methoden:
Chrome DevTools
F12 drücken → Network-Tab → Seite neu laden → Spalte "Size" prüfen. Bei gecachten Dateien steht "(from disk cache)" oder "(from memory cache)".
GTmetrix
Online-Tool, das Ihre Caching-Header analysiert und konkrete Verbesserungsvorschläge gibt. Zeigt auch Cache-Dauer für jede Datei.
Zu GTmetrix →PageSpeed Insights
Google prüft Ihre Cache-Richtlinien und warnt bei zu kurzen Cache-Dauern. Zeigt genau, welche Ressourcen optimiert werden sollten.
Zu PageSpeed Insights →RedBot
Detaillierter Header-Checker von der Internet Society. Analysiert alle Cache-Header und erklärt, was sie bedeuten.
Zu RedBot →Cache-Control Header verstehen
Der Cache-Control-Header ist der moderne Standard für Caching-Anweisungen. Er ersetzt den älteren Expires-Header und bietet mehr Kontrolle.
- public: Darf von Browser und Proxy-Servern gecacht werden. Ideal für statische Assets.
- private: Nur im Browser cachen, nicht auf Proxys. Für personalisierte Inhalte.
- max-age=31536000: Cache-Dauer in Sekunden (31536000 = 1 Jahr).
- immutable: Die Datei ändert sich nie. Browser müssen nicht prüfen, ob eine neue Version existiert.
- must-revalidate: Browser muss beim Server prüfen, ob die Datei noch aktuell ist, bevor er die Cache-Version nutzt.
- no-cache: Darf gecacht werden, aber Browser muss vor Nutzung beim Server prüfen ob aktuell.
- no-store: Niemals cachen. Für sensible Daten wie Bankdaten oder persönliche Informationen.
💡 Beispiele für optimale Cache-Control-Werte
Cache-Control: public, max-age=31536000, immutable→ 1 Jahr Cache, wird nie geprüft
CSS mit Versionierung:
Cache-Control: public, max-age=31536000, immutable→ 1 Jahr Cache, da Dateiname bei Updates ändert
HTML-Seiten:
Cache-Control: public, max-age=3600, must-revalidate→ 1 Stunde Cache, dann Prüfung nötig
API-Responses:
Cache-Control: private, max-age=300→ 5 Minuten Cache, nur im Browser
WordPress: Caching mit Plugins
Für WordPress-Websites gibt es mehrere Plugins, die Browser-Caching automatisch konfigurieren. Sie bieten grafische Oberflächen und übernehmen die .htaccess-Anpassungen für Sie.
- WP Rocket (Premium): Das umfassendste Caching-Plugin. Automatische Konfiguration, Page-Caching, Browser-Caching, Minifizierung – alles aus einer Hand. Kostet ab 49€/Jahr.
- W3 Total Cache (Kostenlos): Mächtiges kostenloses Plugin mit allen Features. Etwas komplexere Einrichtung, aber sehr effektiv.
- WP Super Cache (Kostenlos): Einfaches Plugin von Automattic (WordPress-Entwickler). Weniger Features, dafür sehr zuverlässig und leicht zu konfigurieren.
- LiteSpeed Cache (Kostenlos): Wenn Ihr Hoster LiteSpeed verwendet, ist dies das beste Plugin. Nutzt Server-Level-Caching für maximale Performance.
⚙️ Tipp: Kombinieren Sie verschiedene Caching-Ebenen
1. Browser-Caching (dieser Artikel) – Dateien beim Besucher speichern
2. Server-Caching – Generierte HTML-Seiten auf dem Server zwischenspeichern
3. CDN-Caching – Statische Dateien global verteilen
4. Objekt-Caching – Datenbank-Queries cachen (Redis, Memcached)
Häufig gestellte Fragen
Alles, was Sie wissen müssen
Caching professionell einrichten lassen?
Ich konfiguriere Browser-Caching, Server-Caching und CDN für optimale Performance – und sorge dafür, dass Updates trotzdem problemlos funktionieren.