Zum Inhalt springen

Miniwarenkorb und Cache

Erstellt am 21. Februar 2006 · 9 Antworten · letzte Antwort am 10. März 2006

Tags: Frage

hoppefamily ·

Hallo,
ich habe den Miniwarenkorb übers Template in alle Seiten eingefügt.
Muss ich jetzt alle Seiten "händisch" auf non cache setzen damit der Miniwarenkorb immer aktuell ist?

Flink ·

In den letzten Versionen von tt_products wird kein Cache verwendet, wenn ein Mini-Warenkorb aktiv ist. Das macht natürlich die Webseite langsamer, weil praktisch nie ein Cache verwendet wird.
Es müßten die Links in tt_products umgeschrieben werden, damit auch hier ein dennoch ein Cache möglich wäre, zumindest wenn kein Produkt im Warenkorb liegt.

hoppefamily ·

Was meinst Du mit

In den letzten Versionen von tt_products wird kein Cache verwendet

tt_products ist als USER Object definiert. Daher benützt tt_products Caching. Damit es, so wie es ist, komplett richtig funktioniert dürfte es dies aber eigentlich nicht.
Siehe hierzu meine Thread "Warum ist tt_product ein USER und nicht ein USER_INT Object":

#38362

Das tt_product die Links selbst erzeugt ist klar. Auch das eine Umstellung viel Arbeit ist ... :-))

Gerade deshalb aber sollte tt_products auf USER_INT umgestellt werden.
Ich jedenfalls habe seit der Umstellung keine Cache-Probleme mehr.

Siehe hierzu auch den Artikel übers Caching von Kasper himself. Der Artikel hat mich erst richtig auf das Problem gebracht.

http://typo3.org/development/articles/the-mysteries-of-chash/

steffenk ·

genau das Problem hab ich auch (siehe mein Thread)

Es ist kein Cacheproblem sondern der Miniwarenkorb wir gerendert bevor der Artikel dem Warenkorb zugefügt wird.
Ich habe den MW unter der Liste und da funktioniert es.

Flink ·
hoppefamily schrieb

Siehe hierzu meine Thread "Warum ist tt_product ein USER und nicht ein USER_INT Object":

USER_INT würde bei tt_products bedeuten, daß der Cache praktisch nie verwendet wird. Die Listenansicht hat ja immer zusätzliche Parameter 'begin_at' usw.. D.h. es gäbe überhaupt kein Caching mehr. Damit wäre IndexedSearch nicht einsatzfähig.

Nur als USER Object konnte der Cache innerhalb von tt_products über den Aufruf der Funktion

$TSFE->set_no_cache();

ausgeschaltet werden. Aber diese Funktion läuft mit TYPO3 4.0beta3 wegen Code-Änderungen in class.tslib_fe.php von Ende Februar nicht mehr, weil die Seite jetzt schon vorher aus dem Cache geholt worden ist.

Pre-3.8.0 solutions

Since this API is not implemented for TYPO3 versions prior to 3.8.0 you can of course create a custom implementation where you check directly on TSFE->cHash and call TSFE->set_no_cache() if needed.

hoppefamily ·

Die Verwendung von:

$TSFE->set_no_cache();

hat jedoch den Nachteil das die gesammte Page nicht mehr gecached wird.
Bei einem Shop wo der Miniwarenkorb auf jeder Seite eingebunden ist bedeutet dies das nicht cachen der gesammten Site (ohne die Seiten mit Listview). In diesem Fall geht das Ganze also "nach hinten los". (Nebenbei bemerkt funktioniert das Nichtcachen auch nicht)

Die Verwendung von USER_INT hingegen bedeutet nicht das auf Caching verzichtet wird. Nur der von tt_products "gelieferte" Content wird nicht gecached.

hoppefamily ·

Sorry, was ich vorher gesagt habe war falsch. Ich habe noch ein wenig herumprobiert und glaube ich jetzt das Caching verstanden. D.h.

$TSFE->set_no_cache();

unterbindet das Caching für tt_products (und nicht für die gesamte Page).

Dann gibt es aber einen BUG (oder doch ein Feature?).

Wenn kein Produkt im Warenkorb ist wird beim Miniwarenkorb

$TSFE->set_no_cache();

nicht aufgerufen. Die Seite wird dann gecached.

Wenn jetzt ein Produkt hineingelegt wird und die Seite wieder aufgerufen wird, wird (da gecached) kein Produkt im Miniwarenkorb angezeigt.

steffenk ·

also ich habe auch nochmal experimentiert.

Bei mir funktioniert es nur, wenn ich unter der Liste ein neues Inhaltselement mit Mini-Warenkorb erstelle. Beides in einem Contentelement geht nicht.

hoppefamily ·

natürlich 2 Content Elemente. Pro Content Element geht ja immer nur 1 Code.
Dies ist auch bei mir so, bzw. ich habe den Miniwarenkorb über Typoscript ins template eingebunden.

steffenk ·

und vielleicht ist hier das Problem - TS wird vor dem Plugin bearbeitet, d.h. der Inhalt des Miniwarenkorbes wird vor Auswertung der Post-Vars zusammengestellt.

(pro Contentelement kannst Du beliebig viel Code hinzufügen, das ist eine Liste für mehrere Einträge)

P.S. nutzt Du auch die aktuellste Version ? Franz hat genau in der letzten Version was am Miniwarenkorb geändert.