TYPO3 Caching mit Varnish: Anleitung und Tipps

Vor über 10 Jahren hat unser CTO Andri die TYPO3 Varnish Extension geschrieben, die seither zum De-facto-Standard für die Anbindung von Varnish in eine TYPO3-Umgebung geworden ist. Der folgende Artikel erklärt dir in Kurzform, wie Varnish deine Website-Antwortzeiten minimiert, wie du es mit der passenden Extension in eine TYPO3-Umgebung einbindest, und was du dabei beachten solltest.

Wie kannst du deine TYPO3-Webseite mit Varnish cachen?

Am einfachsten: Indem du deine Webseite bei Ops One hosten lässt 😊. Auf unseren Managed Servern ist Varnish bereits fixfertig vorkonfiguriert. Was du zur Aktivierung wissen musst, findest du in der Ops One Dokumentation
Falls du deine Webseite (noch 😉) anderswo betreiben lässt, wird zur Installation von Varnish die Verwendung der offiziellen Packages empfohlen. Eine ausführliche Installationsanleitung findest du in der Varnish-Dokumentation.

Wo findest du die jeweils kompatible TYPO3 Varnish Extension?

Die Extension für die Anbindung an deine TYPO3-Installation findest du im TYPO3 Extension Repository. Die aktuellste Version der Extension ist die am 27. März 24 erschienene Version 7, die mit TYPO3 12 und 13 kompatibel ist.

Ein regelmässiges Update lohnt sich einerseits wegen der garantierten Kompatibilität mit der jeweils aktuellsten TYPO3-Version. Andererseits sind neue Funktionen nur in der jeweils aktuellsten Extension-Version verfügbar.

Die Vorgänger-Version 6 der Extension ist bis und mit TYPO3 12 kompatibel. Weitere Informationen zur Kompatibilität zwischen Varnish-Extension und TYPO3 findest du in der Dokumentation der Extension.

Seit TYPO3 4.5 wird jede TYPO3 LTS-Version unterstützt; im August 24 feiert die Extension bereits ihr 11-jähriges Bestehen 🎉. Wir freuen uns über ihre anhaltende Beliebtheit und sind stolz darauf, was unser CTO Andri mit seinem damaligen Geistesblitz erschaffen hat 🙌🏻💪🏻.

Wie musst du die TYPO3 Varnish Extension konfigurieren?

👉🏻 Damit der Varnish-Cache die erforderlichen Inhalte bereitstellen kann, muss Varnish zuerst in die Kommunikation zwischen Besucher und TYPO3 eingebunden werden.

👉🏻 Zudem ist vorab sicherzustellen, dass das Caching seitens TYPO3 richtig funktioniert. Frontend-Sessions und _INT-Objekte dürfen nicht verwendet werden, und no_cache kann nicht aktiviert sein. Als Alternative können dynamische Inhalte im Hintergrund per AJAX eingebunden werden.

👉🏻 Es dürfen weiter keine Weiterleitungen oder Ähnliches basierend auf Client-Infos hinterlegt sein.

Wenn all diese Vorbereitungsarbeiten erledigt sind, kannst du die Extension installieren bzw. aktivieren. Die Extension wird erst aktiv, wenn sie Verbindung zum davorgeschalteten Varnish Cache aufnehmen kann. Dafür kannst du die TYPO3 Systemkonfiguration reverseProxyIP auf die Adresse deines Varnish Servers setzen.

Mehr zu Varnish und der TYPO3-Extension

Die erste Version von Varnish wurde 2005 veröffentlicht. Auf der Webseite der Firma Varnish Software gibt es einen spannenden Kurzüberblick zur Entstehungsgeschichte. Mittlerweile ist bereits die Version 7.5.0 aktuell, die wie alle Vorversionen unter einer BSD-Lizenz veröffentlicht wurde.

Sprache und Design von Varnish

Varnish ist in C geschrieben und für alle gebräuchlichen Betriebssysteme als vorkompiliertes Paket verfügbar. Um die Konfiguration möglichst einfach und schnell zu gestalten, wurde eigens eine Varnish Configuration Language (VCL) erschaffen. Diese Meta-Sprache wird für die Ausführung in C-Code kompiliert und in den Varnish-Prozess eingebunden. Dies ermöglicht es uns, den Caching-Prozess zielgenau zu steuern, ohne dafür die Programmiersprache C erlernen zu müssen.

Varnish ist von Grund auf als systemnaher und damit extrem performanter Web-Beschleuniger konzipiert worden, und unterscheidet sich darin von anderen HTTP-Reverse-Proxyservern. Die Inhalte werden im Arbeitsspeicher vorgehalten und können von dort ohne wesentliche Auswirkungen auf die Systemauslastung direkt und sehr effizient an viele gleichzeitige Besucher ausgeliefert werden.

Was ist der Unterschied zwischen Varnish Cache und Varnish Enterprise?

Varnish Cache ist ein Open-Source-Projekt, das von engagierten Freiwilligen getragen und weiterentwickelt wird. Die aktuellsten Releases und weitere Informationen zum Projekt findest du unter varnish-cache.org
Varnish Enterprise ist ein Produkt, das von der Firma Varnish Software vertrieben wird. Im Gegensatz zum Varnish-Cache-Projekt wird das Produkt von bezahlten Angestellten entwickelt und gepflegt, es gibt entsprechenden Support und individuelle SLAs, sowie Beratung und weitere Dienstleistungen zum Produkt. Für weitergehende Anforderungen ist zudem das Produkt Varnish Cache Plus verfügbar. Dieses verfügt über eine Administrationsoberfläche, die Fähigkeit, individuelle Statistiken zu generieren, die Unterstützung einer Paywall, sowie die Einbindung weiterer Module je nach Bedarf. 
Zu den Unterschieden zwischen Varnish dem Projekt und Varnish dem Produkt hat die Firma Varnish Software einen eigenen Blogartikel verfasst.

Wie funktioniert die TYPO3 Varnish Extension?

Wenn die TYPO3 Varnish Extension installiert ist, aktiviert sie eine Funktion im TYPO3-Core, die passende Cache-Header an Varnish sendet. Diese Cache-Header geben Auskunft darüber, wie lange Varnish bestimmte Elemente im Cache speichern soll, bevor sie aktualisiert werden müssen.

Die Extension sendet einen HTTP-Header namens “TYPO3-Pid” an Varnish. Dieser Header wird verwendet, um einen BAN-Befehl gegen Varnish auszulösen. Mit einem BAN-Befehl können bestimmte Elemente selektiv aus dem Cache von Varnish entfernt werden. Wenn du eine “Cache löschen”-Aktion in TYPO3 auslöst, sendet die Extension einen entsprechenden BAN-Befehl an Varnish, um den Varnish-Cache zu leeren. Dieser BAN-Befehl verweist auf die spezifischen PIDs (Prozess-IDs) von TYPO3, die von der Extension an Varnish gesendet werden.

Die TYPO3 Varnish Extension erweitert zudem die CacheActions des TYPO3-Backends, um manuelles Löschen des Varnish-Caches zu ermöglichen.

Die von der Extension gesendeten Header werden nur für die Verarbeitung durch Varnish verwendet und danach entfernt.

Die oben beschriebenen Punkte sind auch in der TYPO3-Dokumentation aufgeführt.

Wo findest du weitere Unterstützung?

Die verschiedenen Zugänge zur Community rund um die Entwicklung des Varnish-Cache-Projekts findest du unter varnish-cache.org. Da es sich um ein von Freiwilligen getragenes Projekt handelt, ist der Umfang von Hilfeleistungen generell begrenzt und hängt davon ab, wie interessant deine Fragen für andere sind. Vieles musst du dir selbst erarbeiten; die Ressourcen dazu sind vorhanden, sofern du sie zu nutzen weisst und Freude daran hast, dir Dinge selbst beizubringen 🤓💪🏻.

Kommerzielle, und damit garantierte und umfassende Unterstützung erhältst du zum Beispiel bei uns 😊. Als langjährige Varnish-Nutzer können wir dir zu fast jeder Frage direkt eine Antwort liefern. Und falls nicht, freuen wir uns über die Herausforderung, die für dich beste Lösung zu finden. Wir nutzen Varnish aus Überzeugung – gerne teilen wir unsere Begeisterung darüber mit dir 🎉.

Wir können dir allgemeine Beratung zu Performance-Optimierung anbieten, oder direkt die Umsetzung des Varnish Cachings für deine Webseite übernehmen. Und für Fragen zur Integration von Varnish in TYPO3 bist du bei uns sowieso goldrichtig – unser CTO Andri hat die Extension gebaut und kennt sie wie kein Zweiter 🧑🏻‍💻.

Willst mehr wissen? Dann melde dich unbedingt bei uns, wir helfen gerne 🤓. Per Mail, übers Kontaktformular, oder du vereinbarst direkt einen Termin mit uns.