In der Welt der Web-Performance-Optimierung kommt es auf Geschwindigkeit an. Die Nutzer erwarten, dass Websites innerhalb eines Wimpernschlags geladen werden, und Suchmaschinen bevorzugen schnell ladende Websites. Hier kommt Varnish ins Spiel – ein leistungsstarker HTTP-Beschleuniger, der die Geschwindigkeit und Skalierbarkeit von Websites drastisch erhöht. Aber was genau ist Varnish, und wie kann es helfen, Ihre HTTP-Leistung zu verbessern?
Varnish (auch bekannt als Varnish Cache) ist ein Hochleistungs-Webanwendungsbeschleuniger, der oft auch als Reverse-Proxy-Caching-Server bezeichnet wird. Er sitzt zwischen Ihren Benutzern und Ihrem Webserver und speichert Kopien von HTTP-Antworten (wie HTML-Seiten, Bilder oder Skripte), so dass wiederholte Anfragen viel schneller bedient werden können.
Im Gegensatz zu herkömmlichen Webservern wie Apache oder NGINX ist Varnish speziell für das Caching und die schnelle Bereitstellung von Inhalten konzipiert. Es wird häufig von Websites mit hohem Datenverkehr, Medienunternehmen und E-Commerce-Plattformen verwendet, die eine blitzschnelle Bereitstellung von Inhalten benötigen.
Varnish arbeitet mit der Zwischenspeicherung von HTTP-Antworten im Speicher. Wenn ein Benutzer eine Seite anfordert:
Erstmalige Anforderung: Varnish leitet die Anfrage an den Backend-Server (z. B. Apache oder NGINX) weiter.
Das Backend generiert die Antwort und sendet sie an Varnish.
Varnish speichert (cached) die Antwort im Speicher.
Varnish liefert diese Antwort dann an den Benutzer.
Nachfolgende Anfragen nach demselben Inhalt werden direkt aus dem Cache bedient, wobei das Backend vollständig umgangen wird.
Dadurch wird die Serverlast verringert und die Bereitstellung von Inhalten erheblich beschleunigt.
Verbesserte Ladezeiten: Varnish stellt zwischengespeicherte Seiten in Millisekunden bereit, was die Ladegeschwindigkeit der Seiten erheblich verbessert.
Geringere Backend-Belastung: Da Varnish einen großen Teil des Datenverkehrs über den Cache abwickelt, können Ihre Webserver komplexere, dynamische Anfragen bearbeiten.
Hohe Skalierbarkeit: Varnish ist darauf ausgelegt, Tausende von Anfragen pro Sekunde zu verarbeiten und eignet sich daher ideal für Websites mit hohem Datenverkehr.
Flexible Konfiguration: Mit der integrierten Varnish Configuration Language (VCL) können Sie genau festlegen, wie Inhalte zwischengespeichert, gelöscht oder ausgeliefert werden.
Bessere Benutzerfreundlichkeit: Schnellere Seitenladezeiten bedeuten zufriedenere Benutzer und niedrigere Absprungraten.
Hier finden Sie einen vereinfachten Ansatz für den Einstieg in die Nutzung von Varnish:
Varnish kann auf den meisten Linux-Distributionen über den Paketmanager installiert werden. Zum Beispiel:
Sie müssen Varnish auf Ihren Backend-Server verweisen und Caching-Regeln in einer VCL-Datei definieren, die sich normalerweise unter /etc/varnish/default.vcl befindet.
Beispiel Ausschnitt:
Damit wird Varnish angewiesen, Anfragen an Ihren Webserver weiterzuleiten, der auf Port 8080 läuft.
Standardmäßig lauscht Varnish auf Port 6081, einem Nicht-Standard-Port für HTTP-Verkehr. In Produktionsumgebungen ist es üblich, Varnish so zu konfigurieren, dass es auf Port 80 lauscht, dem Standard-HTTP-Port, und Ihren Webserver (wie Apache oder Nginx) so anzupassen, dass er einen anderen Port verwendet, normalerweise 8080. Dadurch kann Varnish eingehende HTTP-Anfragen auf Port 80 verarbeiten, den Inhalt zwischenspeichern und Anfragen an den Webserver auf Port 8080 weiterleiten.
Varnish-Listening-Port ändern
Öffnen Sie die Varnish-Konfigurationsdatei, die Sie normalerweise unter /etc/varnish/default.vcl
finden, und setzen Sie den Listening Port auf 80:
Webserver (Apache/Nginx) auf Port 8080 konfigurieren
Wenn Sie Apache verwenden, können Sie die Listen-Direktive
in /etc/apache2/ports.conf
so ändern, dass er auf Port 8080 lauscht:
Bei Nginx passen Sie den Server-Block
so an, dass er auf Port 8080 lauscht:
Varnish und Webserver neu starten
Nachdem Sie diese Änderungen vorgenommen haben, starten Sie Varnish und Ihren Webserver neu, damit die neuen Konfigurationen übernommen werden:
Nun wird Varnish eingehende Anfragen an Port 80 bearbeiten und sie an Ihren Webserver an Port 8080 weiterleiten, wo der Inhalt generiert und bereitgestellt wird.
Varnish ermöglicht es Ihnen, die Art und Weise, wie Inhalte zwischengespeichert werden, mithilfe der Varnish Configuration Language (VCL) anzupassen. Die VCL ermöglicht eine fein abgestufte Kontrolle über das Caching-Verhalten, einschließlich des Ausschlusses bestimmter Inhalte vom Caching, der Behandlung von Cookies und der Festlegung von Löschregeln.
Sie können bestimmte Seiten oder Ressourcen vom Caching ausschließen, indem Sie Bedingungen in Ihrer VCL-Datei verwenden. So können Sie zum Beispiel das Caching von dynamischen Seiten oder sensiblen Benutzerdaten wie Einkaufswagen oder Benutzerprofilen vermeiden.
In diesem Beispiel:
Seiten mit URLs, die /cart
oder /user-profile
enthalten, werden nicht gecached und werden direkt an den Backend-Server zur dynamischen Generierung übergeben.
Sie können Inhalte auf der Grundlage bestimmter Cookies zwischenspeichern, was für die Personalisierung von Inhalten nützlich ist. Wenn Sie beispielsweise nur Inhalte für angemeldete Benutzer mit einem bestimmten Cookie zwischenspeichern möchten, können Sie die Zwischenspeicherlogik wie folgt ändern:
Dieses Beispiel:
Überprüft, ob die Anfrage ein session_id-Cookie
enthält. Wenn es vorhanden ist, wird Varnish den Inhalt für eingeloggte Benutzer zwischenspeichern und den Zwischenspeicher für Benutzer ohne Cookie ignorieren.
Möglicherweise möchten Sie bestimmte zwischengespeicherte Inhalte löschen, wenn sie veraltet sind (z. B. wenn ein Artikel aktualisiert wird). Dies kann mit dem Befehl purge
geschehen.
Dieses Beispiel:
Löscht den zwischengespeicherten Inhalt eines Nachrichtenartikels, wenn er aktualisiert wird, damit die Benutzer immer die neueste Version sehen.
Um sicherzustellen, dass Varnish optimal funktioniert, ist es wichtig, seine Leistung regelmäßig zu überwachen und die Cache-Trefferraten zu analysieren. Varnish bietet verschiedene Tools wie varnishstat
, varnishlog
und die Varnish Administration Console (VAC) zur Leistungsüberwachung.
varnishlog liefert wichtige Metriken für die Analyse der Leistung von Varnish, wie Cache-Trefferraten, Speichernutzung und Backend-Antwortzeiten. Sie können damit überwachen, wie gut Ihre Caching-Konfiguration funktioniert.
Dieser Befehl zeigt Ihnen verschiedene Statistiken an, darunter:
cache_hit: Die Anzahl der Cache-Treffer (Anfragen, die aus dem Cache bedient wurden).
cache_miss: Die Anzahl der Cache-Misses (an das Backend weitergeleitete Anfragen).
backend_conn: Die Anzahl der Verbindungen zum Backend-Server.
Anhand dieser Metriken können Sie beurteilen, wie effektiv Ihre Caching-Strategie ist, und sie bei Bedarf anpassen, um die Leistung zu verbessern.
varnishlog liefert detaillierte Protokolle zu jeder Anfrage und ihrer Interaktion mit Varnish. Dies ist nützlich für die Fehlersuche und das Verständnis, warum bestimmte Anfragen aus dem Cache bedient oder an das Backend weitergeleitet werden.
Mit diesem Befehl erhalten Sie detaillierte Protokolle, die zeigen:
Ob Anfragen aus dem Cache bedient oder an das Backend weitergeleitet wurden.
Cache-Treffer oder Fehlversuche für bestimmte Ressourcen.
Bereinigungsereignisse und andere Interaktionen mit dem Cache.
Die Varnish Administration Console (VAC) ist eine webbasierte Schnittstelle, die Sie bei der Verwaltung und Überwachung Ihrer Varnish-Instanz unterstützt. VAC bietet Echtzeit-Statistiken, Protokolldaten und Cache-Informationen in einer benutzerfreundlichen grafischen Oberfläche.
Sie können auf die VAC zugreifen, indem Sie zu http://your_server_ip:6082
(Standardport für VAC) navigieren.
Verwenden Sie VAC, um die Cache-Leistung zu verfolgen, Ihren VCL-Code zu optimieren und Ihre Caching-Strategie auf der Grundlage der angezeigten Metriken fein abzustimmen.
Medien-Websites: Bereitstellung von statischen Inhalten wie Bildern oder Nachrichtenartikeln mit hoher Geschwindigkeit.
E-Commerce-Plattformen: Beschleunigung von Produktauflistungen oder Kategorieseiten.
Nachrichten und Veröffentlichungen: Bewältigung von Verkehrsspitzen bei Eilmeldungen.
API-Beschleunigung: Zwischenspeichern von leseschweren API-Endpunkten, um die Backend-Last zu verringern.
Varnish ist eine leistungsstarke Lösung für jede Web-Infrastruktur, die hohe Leistung und Skalierbarkeit erfordert. Durch die Entlastung des Backends von wiederholten HTTP-Anfragen und die blitzschnelle Bereitstellung von zwischengespeicherten Inhalten trägt Varnish dazu bei, die Seitengeschwindigkeit zu verbessern, die Serverbelastung zu verringern und die Benutzerfreundlichkeit zu erhöhen.
Wenn Ihre Website ein hohes Verkehrsaufkommen bewältigt oder Sie einfach eine bessere Leistung und Zuverlässigkeit anstreben, ist die Integration von Varnish in Ihren Stack ein strategischer Schritt nach vorn.