Varnish ist ein Zwischenspeicher für HTTP, der vor dem Webserver sitzt und fertige Antworten im Arbeitsspeicher hält. Der zweite Besucher einer Seite bekommt sie aus diesem Speicher, ohne dass PHP oder die Datenbank noch arbeiten.
- Varnish (Caching-Layer)
Ein Zwischenspeicher für HTTP, der vor dem Webserver fertige Antworten im Arbeitsspeicher hält.
Beispiel: „Varnish beantwortete neun von zehn Aufrufen, die Anwendung sah nur den Rest.“Entstanden 2006 bei der norwegischen Zeitung Verdens Gang, geschrieben von Poul-Henning Kamp. Die Regeln stehen in einer eigenen Sprache, der Varnish Configuration Language, kurz VCL.
Abgrenzung zum Server-Cache: Dieser Begriff fasst mehrere Arten von Zwischenspeicher zusammen. Varnish ist einer davon und läuft als eigener Dienst vor der Anwendung.
Was Varnish schnell macht
Der Verzicht auf Arbeit. Eine Antwort aus dem Arbeitsspeicher braucht keine PHP-Ausführung, keine Datenbankabfrage und keinen Dateizugriff, und die Zeit bis zum ersten Byte sinkt auf wenige Millisekunden.
Dazu kommt die Haltbarkeit unter Last. Ein Server, der ohne Varnish bei einigen hundert Aufrufen in der Sekunde aufgibt, liefert mit Varnish ein Vielfaches, solange die Antworten für alle Besucher gleich aussehen.
Wo Varnish Arbeit macht
Bei den Cookies. Sobald ein Aufruf ein Cookie trägt, hält Varnish ihn für persönlich und gibt ihn durch; mit Zählpixeln und Consent-Werkzeugen trifft das fast jeden Besucher. Die VCL muss deshalb aufräumen, welche Cookies zählen.
Der zweite Punkt ist das Verwerfen. Nach jeder Änderung im CMS müssen die betroffenen Adressen aus dem Speicher, über eine PURGE-Anfrage oder eine Regel. Ohne das steht die alte Fassung weiter im Netz.
Was Varnish nicht kann
HTTPS. Der Dienst spricht nur HTTP, weshalb ein Terminator davor gehört, etwa Nginx oder Hitch, der die Verschlüsselung abnimmt und innen unverschlüsselt weitergibt.
Für kleine Websites ist dieser Aufbau aus drei Diensten mehr Technik als Nutzen. Dort genügt der Zwischenspeicher des CMS oder ein einfacher Dienst davor, siehe Reverse Proxy.