Integration von Varnish in eZ Publish

Der zweite Tag im eZ Publish Summer Camp hat begonnen. Die Teilnehmer sehen derzeit noch ziemlich verschlafen aus. Das liegt wohl am gestrigen Abend. Allen „Campern“ wurde ein Dinner in einem schönen und gutem Restaurent in Bol spendiert.

Ein Welcome Drink sowie Vor-/Haupt-/Nachspeise waren inbegriffen. Für unser Geburtstagskind Stefanie wurde sogar ein Ständchen gesungen. Happy Birthday Stefanie und vielen Dank an die Organisation für diesen netten Abend.

So, wenige Minuten noch und wir starten in den zweiten Tag. Im CMS Track wird Varnish und im PHP Track Symfony 2 vorgestellt. Ich würde mir ja lieber Symfony 2 anhören, doch Varnish mit eZ Publish kann ich dann doch nicht auslassen. Sebastien Morel von Novactive wird uns sicher einiges zeigen und erklären. Wie angenommen befinden sich gerade mal eine Handvoll von Entwicklern im CMS Track. Symfony 2 ist wohl heute der große Magnet. 

Varnish kann man sich als Schild für die Webserver verstellen, hört sich doch schon mal gut an. Varnish kommt immer vor dem Webserver, ob als eigener Rechner oder als Dienst auf dem Webserver. Varnish wird zum großen Teil für Clusterlösungen verwendet, doch es kann natürlich auch für kleinere Installationen eingesetzt werden. 

VCL – Files
Diese sind für die Konfiguration von Varnish zuständig und haben eine C- und Perl-artige Syntax. Es gibt jedoch keine Loops und Variablen. 

Ok, langsam blicke ich nichtmehr durch, aber weiter geht’s. Er erklärt gerade wie Varnish intern funktioniert. Ah, jetzt kapiere ich es 🙂 Varnish schaut ob die Dateien schon im Cache sind, wenn nicht, dann sendet er einen Request an den Webserver und  er erstellt die Datei für den Client. Grob gesagt, wenn es wie ein HIT-Model aussieht, ist alles im purpur grünen Bereich, d.h. keine Anfragen an den Webserver. 

Oh, jetzt müssen wir Varnish installieren. Na gut, das ging ja noch 🙂

Puh, die Geschwindigkeit im Vortag nimmt immer mehr zu, sein französischer Akzent macht es auch nicht gerade einfacher für mich. Aber Durchhalten und dran bleiben ist die Devise. Ein VCL File wird genauer unter die Lupe genommen. Genial, was man da alles einstellen kann, welche Daten gecacht werden und welche nicht. Ganz wichtig: Session und Cookies müssen in diesem angedacht werden, da sie natürlich nicht gecacht werden dürfen. Darunter fallen auch Ajax-Calls.

Langsam habe ich das Gefühl, dass mein Varnish zwar läuft aber nichts macht – HILFE…..

In dem VCL File kann man auch die Zeiten definieren, in welchem Zeitraum die Daten erneut angefragt werden müssen. Ok, ich versteh gerade nur noch Bahnhof – er zeigt uns einen Varnish Code und wir sollen den Fehler finden. Ähm, bis vor 40min habe ich nichtmal gewusst wie ich Varnish installiere, und es läuft nicht. Weil mein Port 8080 nicht funktioniert. Juhu, es funktioniert mein kleiner Varnish läuft. Die genaue Erklärung folgt nach der Schulung. 

Ahhhh, jetzt geht mir langsam ein Licht auf, is ja total easy 🙂 Wenn man den Service mal richtig startet und dann läuft das Ganze. Man kann sogar Debug-Ausgaben über das VCL File angeben, damit kann man schnell sehen wo man sich im Varnish befindet. 

Mit Edge Side Include kann man Blöcke von einer Seite direkt durch den Varnish an den Client schicken. Diese funktionieren nur im PASS Modus nicht im PIPE, ist aber klar, da der Varnish nur im PASS Modus mit dem Webserver kommuniziert. So, jetzt steigen wir in eZ Publish ein. Er erklärt gerade das A und O in eZ – Cache-Block. Wenn man den Cache-block falsch konfiguriert, kann es zu starken Performance Problemen kommen. Hier also bitte Vorsicht walten lassen. 

Dies muss im VCL rein, damit ESI läuft.


if (!req.url ~ "\.(gif|jpg|swf|css|js|png|jpg|jpeg|gif|png|tiff|tif|svg|swf|ico|css|js|vsd|doc|ppt|pps|xls|mp3|mp4|m4a|ogg|mov|flv|avi|wmv|sxw|zip|gz|bz2|tgz|tar|rar|odc|odb|odf|odg|odi|odp|ods|odt|sxc|sxd|sxi|sxw|dmg|torrent|deb|msi|iso|rpm)$") { set beresp.do_esi = true; }

ESI content view – vergiss das Cache-block Key Konzept? War gerade eine Aussage.

<esi:include src="/layout/set/esi/content/view/rightzone/{$#node.node_id}" />

 So schaut ein esi Befehl in eZ Publish aus.

Aber auch hier habe ich einige Fragezeichen. Bin mir jedoch sicher, nach einigen stillen Stunden werde ich auch hier durchblicken 🙂

David Hohl

Seit 1995 Entwickler und Projektleiter. Langjährige Erfahrung mit eZ Publish. War von 2012 bis 2014 bei silver.solutions als Entwickler, Konzeptionen und Projektleiter für eZ Publish Projekte verantwortlich.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.