Eine schnelle Website ist im E-Commerce unerlässlich: Sie verbessert die Nutzererfahrung, senkt die Absprungraten und steigert die Conversion-Rate. Varnish Cache ist in diesem Zusammenhang eines der leistungsstärksten Tools, um die Ladezeiten deines Shopware 6.6 Shops drastisch zu verbessern.
In diesem Artikel zeigen wir dir, was Varnish genau macht, wie du es auf einem Linux-Server mit Shopware 6.6 einrichtest, welche Vorher-Nachher-Leistungsvergleiche möglich sind – sowie typische Fallstricke und deren Lösungen.
Was macht Varnish genau?
Varnish Cache ist ein sogenannter HTTP-Cache-Beschleuniger – kurz: Es speichert deine Webseite als statische Kopie im Speicher deines Servers und liefert diese Kopie bei Anfrage blitzschnell direkt aus. Dadurch müssen dynamische Inhalte nicht bei jeder Anfrage vom Backend oder der Datenbank neu generiert werden. Dies reduziert die Belastung der Server und beschleunigt die Auslieferung enorm.
So funktioniert Varnish im Überblick:
- Erster Aufruf einer Seite:
- Ein Nutzer ruft eine Seite deines Shops auf. Diese Anfrage wird zur Datenbank und zum PHP-System von Shopware geleitet, um die Inhalte zu generieren.
- Varnish speichert das generierte Ergebnis (HTML) in seinem Cache.
- Folgende Aufrufe:
- Der nächste Nutzer bekommt die Seite direkt aus dem Cache von Varnish – ohne Umweg über das Backend.
- Die Auslieferung erfolgt in wenigen Millisekunden, während die Last auf den Server drastisch reduziert wird.
Warum ist Varnish besonders geeignet für Shopware?
- Optimale Performance bei hohem Traffic: Varnish hilft insbesondere bei stark frequentierten Shops, da es Anfragen sehr effizient verarbeitet.
- Personalisierbarkeit: Durch eigene Regeln (VCL – Varnish Configuration Language) kannst du den Cache auf deine Anforderungen zuschneiden, z. B. keine Benutzer-spezifischen Seiten cachen oder bestimmte Cookies ausschließen.
- Integration mit modernen Shopsystemen: Shopware 6.6 unterstützt Varnish bereits und erlaubt eine problemlose Integration ins bestehende Caching-System.
Einrichtung von Varnish auf einem Shopware 6.6 Linux Server
Die Einrichtung von Varnish Cache mag zunächst kompliziert erscheinen, lässt sich aber Schritt für Schritt gut umsetzen. Hier ist eine Anleitung speziell für Shopware 6.6 auf einem Linux-Server:
1. Voraussetzungen
Bevor du Varnish installierst, stelle sicher:
- Du hast einen Linux-basierten Server (Ubuntu 20.04 oder höher, CentOS).
- Ein eingerichteter Shopware 6.6 Shop ist auf deinem Webserver aktiv.
- Dein Webserver ist entweder Apache oder NGINX.
Installation des Shops vorbereiten
Da Varnish als Proxy zwischen deinem Webserver und dem Client agiert, unterstütze deinen Shop durch die Aktivierung von Cache-Tags (wichtig für dynamisches Caching). Das Shopware-Caching funktioniert gut mit Varnish als zusätzlicher Ebene.
2. Varnish installieren
Für Ubuntu:
sudo apt update sudo apt install varnish
Für CentOS:
sudo yum install varnish
Überprüfen der Installation:
Prüfe, ob Varnish korrekt installiert wurde:
varnishd -V
3. Standard-Port umstellen
Per Standard lauscht Varnish auf Port 6081, während dein Webserver (z. B. NGINX oder Apache) auf Port 80 läuft. Du musst dies ändern, sodass Varnish Anfragen über Port 80 entgegennimmt.
Bearbeite die Varnish-Konfigurationsdatei:
sudo nano /etc/varnish/default.vcl
Passe folgende Konfiguration an:
backend default { .host = "127.0.0.1"; .port = "8080"; // Dein Webserver (Apache/NGINX-Port) }
Anfragen an Varnish werden nun über Port 80 weitergeleitet.
Starte danach Varnish neu:
sudo systemctl restart varnish
4. Shopware 6.6 auf Varnish vorbereiten
- Cache aktivieren: Navigiere im Shopware Backend zu
Einstellungen > Cache
. Stelle sicher, dass der Cache aktiviert ist. - Varnish im Proxy-Modus verwenden: Shopware kann so konfiguriert werden, dass es Cache-Header an Varnish übergibt.
Bearbeite hierzu die .env
-Datei in deiner Shopware-Installation:
SHOPWARE_HTTP_CACHE_ENABLED=1 SHOPWARE_HTTP_DEFAULT_TTL=7200
Danach den Cache leeren:
php bin/console cache:clear
Testergebnisse und Vergleich: Vorher vs. Nachher
Vorher (ohne Varnish):
- Ladezeit der Startseite: ca. 1,5–2,0 Sekunden
- Verarbeitungszeit pro Anfrage: 100–300ms
- Parallel abgewickelte Anfragen (bei 100 Nutzern): hohe Serverlast (CPU bis 80 %)
Nachher (mit Varnish aktiviert):
- Ladezeit der Startseite: < 500ms
(bei gecachten Seiten!) - Verarbeitungszeit pro Anfrage: 2–6ms
(Cache wird ohne Backend direkt ausgeliefert) - Parallel abgewickelte Anfragen (bei 100 Nutzern): drastisch geringere Serverlast (CPU bis max. 30 %)
Durch Varnish werden oft innerhalb von Sekunden mehrere Hundert Anforderungen verarbeitet, während die Datenbank fast komplett entlastet wird. Besonders für stark frequentierte Shops ein großer Vorteil.
Übliche Fallstricke und Lösungen
- Cookies im Cache:
- Problem: Nutzer-spezifische Cookies (z. B. Warenkorbinhalte, Sitzungsdaten) könnten zu fehlerhaften Cache-Inhalten führen.
- Lösung: Konfiguriere Varnish so, dass Cookies ignoriert werden, außer sie sind wirklich erforderlich.
Beispiel (indefault.vcl
):
if (req.http.Cookie) { return (pass); }
- Caching dynamischer Inhalte (z. B. Warenkorb):
- Problem: Dynamische Seiten wie der Warenkorb sollten nie gecacht werden.
- Lösung: Markiere diese Seiten im Shopware Backend mit No-Cache-Tags oder Konfiguriere Varnish, um den Cache für diese Seiten zu umgehen.
- HTTPS-Probleme:
- Problem: Varnish unterstützt nativ kein HTTPS.
- Lösung: Nutze einen Reverse-Proxy wie Nginx oder Apache vor Varnish, um HTTPS-Support zu ermöglichen.
- Fehlerhafte Cache-Invalidierung:
- Problem: Änderungen am Shop (z. B. Preise, Produkte) werden nicht sofort übernommen.
- Lösung: Stelle sicher, dass Cache-Tags in Shopware aktiviert sind und Varnish korrekt auf die Tags reagiert.
Die Konfiguration von Varnish Cache für Shopware 6.6 bietet immense Vorteile in Bezug auf Performance und Serverentlastung. Mit blitzschnellen Ladezeiten und effizienter Ressourcenverwaltung kannst du deinen Shop optimal auf hohen Traffic vorbereiten.
Auch wenn die Einrichtung einige technische Schritte erfordert, lohnt sich der Einsatz von Varnish gerade bei stark besuchten Shops.
Probiere es aus und erlebe den Unterschied!