Interview zur IPC mit Daniel Rotter

Richtiges Caching: Mehr als ein Performance-Gewinn
Keine Kommentare

Die Zeit ist eine der wertvollsten Ressourcen – und das Internet ist dabei natürlich keine Ausnahme. Das „Caching“ von Inhalten für die passende Zielgruppe ist deshalb besonders wichtig. Anlässlich der IPC Conference sprachen wir mit dem erfahrenen Web Developer Daniel Rotter (u.a. Sulu CMS) über dieses spannende Thema.

Benutzer warten nicht gerne auf Inhalte und sind schneller als erwartet. Auf der anderen Seite sollte sich eine Website ihren Besuchern auf jede erdenkliche Weise anpassen, so dass Webseiten heutzutage eines der wichtigsten Themen für Entwickler sind. In seinem Vortrag auf der IPC in Berlin wird der Webentwickler Daniel Rotter das Thema des Caching von Inhalten für spezielle Zielgruppen auf einer Website behandeln und einen kurzen Überblick über die Grundlagen des HTTP-Caching geben. Er wird dabei auch zeigen, wie man eine Caching-Lösung implementiert, die verschiedene Repräsentationen für verschiedene Benutzer mit Symfony und seinem HTTP-Cache zeigt. In unserem Interview gibt er schon einmal einen spannenden Einblick in das Thema.

Entwickler.de: Das Caching von speziellen Inhalten ist sicherlich ein wichtiger Hebel, für die erfolgversprechende Zielgruppenbindung einer Website. Warum fällt dieses Thema trotzdem (oftmals) im Entwickleralltag unter dem Tisch?

Daniel Rotter: Ich glaube das Problem ist, das Entwickler auch in einer Entwicklungsumgebung arbeiten. Und in diesem Arbeitsumfeld ist die Performance oft nur zweitranging. Man schaltet viele Cachingmechanismen ab, um eine bessere Developer Experience zu erreichen. Das ist zwar während dem Entwickeln um einiges angenehmer, weil man nicht dauernd irgendwelche Caches löschen muss. Allerdings kann es natürlich immer wieder passieren, dass dadurch gewisse Performance Probleme nicht auffallen.

Ein anderes Problem ist natürlich auch noch wenn man bei einem Projekt unter Zeitdruck steht. Wenn eine Deadline sehr nahe rückt ist das leider eines der ersten Themen auf das vergessen wird.

Entwickler.de: Für welche Zielgruppe ist das Vorhalten von speziellen Inhalten besonders wichtig?

Daniel Rotter: Ich denke das kann man so generell gar nicht beantworten, weil das sehr vom Use Case abhängt. Auf einer Rezeptseite könnte man z. B. vermeiden einem Vegetarier Fleischgerichte vorzuschlagen. Bei einer Urlaubsplattform wäre dagegen wahrscheinlich interessanter ob der Besucher eher einen Party- oder einen Familienurlaub plant. Ich denke mit ein bisschen Fantasie kommt man bestimmt noch auf viele andere Beispiele.

Entwickler.de: Wie aufwendig ist das Implementieren einer Caching-Lösung?

Daniel Rotter: Wenn man auf den HTTP Standard setzt, ist das eigentlich nicht wirklich viel Arbeit. In der einfachsten Form kann man einen beliebigen Reverse Proxy vor seine Applikation installieren, und danach muss man nur noch die richtigen HTTP Header setzten. Das Aufwendige ist eher wie man den Cache wieder invalidiert, aber wenn da einfach nur eine Zeitangabe wie „Cache diesen Inhalt für eine Stunde“ reicht, dann nimmt das einem auch schon der Reverse Proxy ab.

Bei gewissen Anforderungen reicht eine solche Lösung aber nicht aus, und dann wird es etwas komplizierter. Ein CMS wie Sulu kann einem dann aber schon einiges an Arbeit abnehmen. Wie das genau funktioniert ist dann das Thema von meinem Talk auf der IPC.

Entwickler.de: Das Cachen einer Website ist mitunter komplex. Was kann im schlimmsten Fall hinsichtlich der Ladezeiten passieren?

Daniel Rotter: Ich glaube nicht, dass die Ladezeiten einer Website durch einen Cache negativ beeinflusst werden kann. Im schlimmsten Fall wird die Seite nie aus dem Cache ausgeliefert, und dann ist sie halt gleich schnell als würde man keinen Cache verwenden. Die eigentlich Gefahr lauert meiner Meinung nach darin, dass alte Inhalte ausgespielt werden können, die nicht mehr aktuell sind, weil sie eben aus dem Cache geliefert werden. Je nach Use Case ist das ein mehr oder weniger großes Problem. Da spielen dann die bereits vorher erwähnten Cache Invalidierungsstrategien eine größere Rolle. Man muss sich auch bewusst sein, dass man auf gewisse Caches keinen Einfluss hat. Vom Server aus habe ich z.B. keine Möglichkeit den Cache im Browser des Benutzers zu löschen, weshalb man mit hohen Cache Lifetimes eher vorsichtig sein sollte.

Entwickler.de: Welche technischen Lösungen empfiehlst Du, um eine optimale Caching-Strategie umzusetzen?

Daniel Rotter: Varnish ist bestimmt die technische Lösung, an der sich andere messen müssen. Varnish ist in C implementiert und wahnsinnig performant. Dafür ist ein solches Setup auch schwieriger aufzusetzen, aber je nach erwartetem Traffic kann sich das durchaus lohnen.

Da unser CMS Sulu auf Symfony aufsetzt, ist es dort naheliegend auch den Symfony HttpCache zu verwenden. Mit diesem kann man auch schon merkbare Verbesserungen erzielen, und ihn in einem bestehenden Symfony Projekt einzubauen ist relativ einfach.

Zusätzlich sollte man noch erwähnen, dass beide zuvor erwähnten Caches auf den HTTP Standard setzen. Das heißt man kann mit dem Symfony HttpCache starten, und mit relativ wenig Aufwand zu Varnish wechseln, falls man während dem Betrieb merkt, dass man Performance Engpässe hat.

Vielen Dank für dieses Interview!

Daniel Rotter ist seit 2013 Teil des Sulu Core Teams und hat bereits an seinem Vorgänger ZOOLU gearbeitet. Abgesehen davon ist Daniel Rotter ein aktives Mitglied der lokalen Entwicklergemeinschaft und organisiert zudem lokale Treffen und Konferenzen.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu:
X
- Gib Deinen Standort ein -
- or -