Die Contao Marketing Suite und der Contao Cache

Es könnte so einfach sein …

Die aktuelle Situation

Seit der Version 2.1.4 der Contao Marketing Suite gibt es eine "Lösung" für das Caching-Problem. Wir erklären die Einzelheiten.

Ab der genannten Version können einzelne Seiten mehr oder weniger bedenkenlos mit aktiviertem Caching ausgeliefert werden. Hierfür ist es jedoch notwendig eine Umgebungsvariable namens COOKIE_ALLOW_LIST zu setzen. Wie man das macht und welchen Inhalt die Variable haben muss findet man in der Entwickler-Dokumentation von Contao.

Was beachtet werden muss

Das der Cache nun wie erwartet funktioniert ist eine tolle Sache, man muss jedoch auch einige Dinge beachten. Grundsätzlich gilt das auf gecachten Seiten nichts genutzt werden kann was die Identifizierung des Besuchers erfordert. Das betrifft also A/B-Tests genauso wie den Cookie-Consent.

Letzterer ist nicht völlig ausgehebelt, kann aber nicht entscheiden welche Tags ausgespielt werden dürfen. Daher werden auf gecachten Seiten über das Consent-Modul nur Tags ausgespielt die keine Zustimmung des Besuchers erfordern. Ebenso bekommen Besucher solcher Seiten nie einen Consent-Dialog zu sehen.

Gibt es keine "bessere" Lösung?

Na und ob es die gibt! Allerdings müssen wir uns bis dahin noch etwas gedulden da das Thema recht umfangreich ist und Zeit benötigt. Sobald wir hierzu etwas neues berichten können erfahrt ihr es hier 😉

Die nachfolgenden Zeilen dieses Artikels erklären die Problematik in der vorherigen Situtation.

 

 

Kurz zusammengefasst

Der Contao-Cache (seit Version 4.8) funktioniert aktuell grundsätzlich nicht in Verbindung mit Cookies. Um die getroffenen Privatsphäre-Einstellungen des Besuchers zu speichern, benötigen wir unbedingt Cookies. Wenn sich die Situation bei Contao ändert, werden wir selbstverständlich ein entsprechendes Kompatibilitäts-Update nachliefern.

Wozu brauche ich einen Cache?

Der (Contao-)Cache ist eine tolle Sache. Auf scheinbar magische Art und Weise werden vorher langsame Seiten plötzlich ziemlich schnell.  Aber was genau tut so ein Cache denn?

Eine Contao-Seite besteht aus vielen verschiedenen Inhalten. Bilder, Texte, Frontend-Module und vieles mehr. Diese Informationen werden bei jeden Aufruf einer Seite aus der Datenbank geholt, entsprechend aufbereitet und über Templates zu einer vollständigen Seite zusammengesetzt. Das alles passiert meist in Bruchteilen von Sekunden.

Also alles gut oder? Nicht ganz …

Ein einzelner Aufruf stellt kein Problem dar. Habt ihr aber hunderte oder gar tausende Besucher gleichzeitig auf der Seite werden aus Sekundenbruchteilen ganz schnell mehrere Sekunden oder gar Minuten! Hier schafft ein Cache Abhilfe.

In der „einfachsten” Form des Caching (Client-Side-Cache) wird dem Browser des Nutzers die Information mitgegeben ob er diese Version der Seite speichern darf und falls ja, für wie lange. Das passiert so auch, z. B. für Bilder.

Das funktioniert gut, wenn derselbe Nutzer mehrmals die gleiche Seite aufruft.

Nach dem ersten Aufruf, welcher unter Umständen mal eine winzige Zeitspanne dauert, kommen die nachfolgenden Aufrufe wie aus der Pistole geschossen, weil die Webseite nicht mehr neu angefragt werden muss. Der Browser weiß, es ist eine Version im Cache, die nach wie vor gültig ist. Daher kann er blitzschnell direkt antworten ohne auf den Server warten zu müssen. Absolut eine klasse Sache.

Was passiert jedoch wenn viele Leute die gleiche Seite aufrufen. Wenn sie erst einmal angefragt werden muss um die Seite in den Browsercache zu laden? An genau dieser Stelle kommt der Serverseitige Contao-Cache (Server-Side-Cache) ins Spiel.

Beim Serverseitigen Cache spart sich Contao bzw. der Server eine Menge Arbeit.

Nachdem eine Seite durch einen Aufruf zum ersten Mal generiert wurde, wird diese vollständig im Cache auf dem Server abgelegt. Somit können nachfolgende Anfragen direkt mit der fertigen Seite aus dem Cache bedient werden, ohne vorher auf die Datenbank oder sonstige Komponenten warten zu müssen.

Also Cache aktivieren und entspannt zurücklegen oder? Ganz so einfach ist es leider nicht…

Wo der Serverseitige Cache hilft, und wo es problematisch wird.

Der Cache ist immer dann von Vorteil, wenn viele Besucher die gleiche Seite angezeigt bekommen sollen und sich an der aufgerufenen Seite nichts ändert. Das wird vermutlich auch bei einem Großteil der Webseiten so sein.

Es gibt natürlich Inhalte die mehr oder weniger regelmäßig aktualisiert werden. Dafür werden die Zeiten für den Cache im Backend eingestellt.

Was ist mit Inhalten, die für jeden Nutzer individuell sind?

Hier hilft ein serverseitiger Cache nur bedingt. Angenommen es gibt einen internen Mitgliederbereich in dem Nutzer individuelle Inhalte zu sehen bekommen. Ein Cache würde hier dazu führen, das alle Mitglieder immer den gleichen Inhalt sehen im schlimmsten Fall Inhalte eines völlig fremden Nutzers.

Um das Szenario zu umgehen gibt es beim Contao-Cache eine ganz einfache Regel:
Kein Cache bei Cookies.

Wenn sich ein Mitglied in Contao einloggt, muss es für die Dauer der Sitzung eindeutig identifiziert werden. Das passiert über die sogenannte Session-ID.

In frühen Zeiten des Internets wurden diese Session-IDs noch als Parameter an jeder URL mit übertragen. Da dies allerdings sicherheitstechnisch bedenklich war, jemand der die URL kennt, konnte somit die Session übernehmen, hat man sich entschlossen die Session in Form eines Cookies (i.d.R. die PHPSESSID benannt) zu überliefern.

Toll für die Sicherheit, aber was hat das nun mit dem Cache zu tun?

Wenn die Session per Cookie überliefert wird, muss man leider davon ausgehen, das es vielleicht auch andere Cookies gibt, die dazu führen das ein Nutzer eine inhaltlich unterschiedliche Seite geliefert bekommt.

Daher dürfen Seiten mit Cookies nicht aus dem Cache kommen.

Was hat das mit der Contao Marketing Suite zu tun?

Es gibt mehrere Berührungspunkte …

Betrachten wir zuerst die Cookie-Bar der Contao Marketing Suite. Hier wird definiert, welche Tags auf welcher Seite ausgespielt werden. Der Nutzer muss dieser Regelung nur zustimmen.

Woher weiß Contao, ob der Besucher einer Auslieferung zugestimmt hat? Richtig. Die Entscheidung muss gespeichert werden. Entweder in der Session des Besuchers, oder in Form eines Cookies, das nahezu unbegrenzt lange gespeichert werden kann.

In beiden Fällen haben wir jedoch am Ende des Vorgangs ein Cookie in Verwendung. Entweder für die Session-ID oder eben für die vom Besucher konkret getroffene Auswahl.

Ich mag Cookies aber geht es nicht auch ohne?

Ja und nein.

Es gibt andere Lösungen zum DSGVO-konformen Ausspielen von externen Inhalten und einige davon kommen vermutlich auch ohne Cookies aus.

Grundlegend wäre es denkbar, die Entscheidung des Besuchers in einer Form zu speichern, welche das Caching der Seite nicht beeinflusst. Das funktioniert jedoch nur, wenn es ausschließlich darum geht, ein paar Skripte bei Bedarf im Hintergrund zu laden. (z. B. eine einfache Einbindung des Google Tag Managers).

Warum ist es in der Contao Marketing Suite nicht so?

Weil die Cookie-Lösung der Contao Marketing Suite die größtmögliche Flexibilität und Freiheit bietet.

Die Contao Marketing Suite kann zu wesentlich mehr genutzt werden als nur einfache Tracking-Skripte auszuspielen. Mit der Contao Marketing Suite können einzelne Inhalte innerhalb einer Seite abhängig davon angezeigt werden, ob der Besucher einer bestimmten Gruppe im Cookie Opt-In Dialog zugestimmt hat oder nicht.

Richtig konfiguriert kann man so den Besucher der Webseite das Beste Nutzungserlebnis bei gleichzeitiger Datensparsamkeit ermöglichen. Das wird durch individuelle Inhalten pro Besucher ermöglicht.

Das Opt-In Thema ist lediglich ein kleiner Bestandteil der Contao Marketing Suite. Das Hauptaugenmerk der Anwendung liegt auf dem Bereich Marketing.

Für erfolgreiches Marketing sind A/B-Tests unbedingte Voraussetzung. Weiterhin sind individuelle Inhalte für Besucher, basierend auf ihrem bisherigen Verhalten innerhalb einer Seite, ein weiterer Baustein für den Erfolg der Webseite. Die Voraussetzung dafür ist, dass der Nutzer immer eindeutig identifiziert werden kann.

Die Möglichkeit mit der dies leicht umsetzbar ist, sind die Verwendung der Session-Informationen oder die Verwendung entsprechender Cookies.

Also keine Chance für den Serverseitigen Cache?

„Sag niemals nie.”

Contao entwickelt sich, wie der Rest des Webs, täglich weiter. Uns als Entwickler erschließen sich ständig neue Möglichkeiten und auch mit den Entwicklern aus dem Contao-Team sprechen wir.

Zum aktuellen Zeitpunkt haben wir noch keine einfache Musterlösung zur Hand. Ihr kennt uns - wir sind immer dabei, alle möglichen Optionen in bester Qualität zu bieten. Daher sind wir uns sicher, in der Zukunft auch aus dieser Herausforderung eine Lösung machen zu können.

Mit der Erfahrung aus über 300 Contao-Projekten, unzähligen Eigenentwicklungen sind wir ganz tief im Contao-Thema drin. Contao ist und bleibt das für uns beste CMS und die Contao Marketing Suite die beste Lösung für professionelles Marketing mit Contao.