[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