[TYPO3-german] TYPO3 Caching, aus- und eingeloggt

Bernhard Kraft kraftb at think-open.at
Mon Jun 9 15:26:43 CEST 2014


Hallo,

On 06/08/2014 10:21 AM, Sven Burkert wrote:

> Das felogin Plugin ist USER_INT, daher erwarte ich eigentlich, dass TYPO3
> für diese Seite nur einen einzigen Cache-Eintrag erzeugt, der sowohl für
> den eingeloggten als auch nicht eingeloggten Besucher verwendet wird, dem
> ist aber nicht so. Kann mir bitte jemand sagen, wieso?

Ich kann :)

Das ist eigentlich kein Problem sondern ein Feature. Wie bereits von 
Daniel erklärt hängt dies von den FE-Gruppen aber. Aber nicht nur 
sondern auch von dem Ergebniss der Auswertung von Conditions. Im Prinzip 
erstellt TYPO3 einen Hash aus einer Anzahl an Informationen. Dazu sollte 
man folgende Methode ein wenig studieren:

https://git.typo3.org/Packages/TYPO3.CMS.git/blob/HEAD:/typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php#l2515

In dieser Methode (createHashBase) wird array $hashParameters erstellt 
aus welchem schließlich der "identifier" für einen Cache-Eintrag 
erstellt wird. Teil dieser Parameter ist wie bereits von Daniel erwähnt 
die dem Benutzer zugeordnetem Gruppen ($this->gr_list), Seiten ID und 
Type, dann auch noch die übergebenen GET/POST parameter 
$this->cHash_array - natürlich nur dann wenn diese durch den &cHash 
Parameter verifziert wurden.

Man sieht außerdem, dass unter gewissen Bedingungen $this->all 
hinzugefügt wird. Dabei handelt es sich eben um das Auswerten der 
Conditions.

Diese ganze Methode kann unter manchen Umständen zu großen Problemen 
führen. Stell dir vor du hast eine Seite mit 1000 pages und 5 Conditions 
welche alle z.B. aufgrund einer Standardnormalverteilung entweder TRUE 
oder FALSE sein können. Dadurch könntest du 2^5 = 32 Varianten jeder 
Seite erhalten was bei 1000 Seiten 32.000 Cache Einträge ergeben würde - 
obwohl dein Inhaltselement _INT ist ...


Ich hab bereits vor einiger Zeit versucht mich diesem Problem anzunehmen:
https://review.typo3.org/#/c/27222/

Hierbei handelt es sich um einen Patch des Caching-Frameworks:
Ich habe eine neue Cache-Klasse erstellt welche im Prinzip einen 
Fingerprint (SHA-1) des zu-cachenden Inhalts erstellt. Jeder Inhalt wird 
nur einmal echt im Caching Framework abgelegt - für jede Seiten-Variante 
wird nur mehr ein Stellvertreter (Surrogate) Cache-Eintrag abgelegt 
welcher auf die Echt-Daten verweist.

Es gab jedoch Gegenargumente: Redundante Daten nicht doppelt abzulegen 
sei nicht Aufgabe des Caching Frameworks ... diese Ansicht teile ich 
jedoch nicht. Ich habe die weitere Arbeit daran dann jedoch eingestellt.


grüße,
Bernhard


More information about the TYPO3-german mailing list