OXID, Smarty und das Caching

Hallo Leute,

wie ich in meinem Thema Firmen in OXID CE bereits beschrieben habe, habe ich noch ein kleines Problem mit dem Caching der Templates durch Smarty.

Und zwar habe ja dadurch, dass bestimmte Artikel nur von bestimmten Benutzern gesehen werden dürfen immer wieder mal den Fall, dass eine Kategorie plötzlich leer ist. Diese soll dann ausgeblendet werden. Im Theoretischen ist das alles kein Problem. Wenn ich den Ordner /tmp lösche, dann ist das auch kein Problem. Allerdings ist das keine Lösung.

Ich habe also mehrere Möglichkeiten, die alle auch Probleme haben:

  1. Ich lösche die Dateien bei jedem Aufruf der Seite oder bei jeder Anmeldung eines Benutzers aus dem /tmp-Verzeichnis, sodass sie jedes mal neu generiert werden müssen. Dabei ist natürlich ziemlich groß. Zudem reicht bei jeder Anmeldung nicht. Es muss also mit jedem Seitenaufruf passieren.
  2. Ich verhindere Über Smarty ein Caching der Dateien. Das hätte ebenfalls den Effekt, dass sie jedes mal neu generiert werden und so immer unterschiedlich aussehen.
  3. Ich unterbinde das Smarty-Caching ganz. Das ist aber performancelastig.

Ich würde Möglichkeit vorziehen, weiß aber leider nicht wo ich das einstellen kann bzw. wo Smarty in den Shop eingebunden wird.

Zudem wundere ich mich, wie das bei der Artikelliste funktioniert. Diese wird anscheinend nicht gecacht, da sie sich bei jeder Anmeldung wie gewünscht verändert. Vielleicht wäre das meine Lösung?

Über entsprechende Antworten wäre ich sehr erfreut.

Viele Grüße vom Praktikanten!

Du solltest im framework besonders die View ID im Auge behalten, diese ist ein Bestandteil des Dateinamens für das Smarty Caching - eventuell solltest du in den entsprechenden Views dafür sorgen dass die User ID bzw. das Berechtigungslevel (Gruppe?) ein Bestandteil davon wird. Das ist alles sehr tief verankert also vorsicht damit.

Sieh dir als Referenz mal views/alist.php => getViewId() an - das baut eine view id anhand der Parameter auf, das sollte der Punkt sein an dem du arbeiten musst für deine eingeschränkten views.

Hallo aggrosoft,

ich behelfe mir zurzeit mit einer Notlösung, die es zulässt, dass ich den gesamten Smarty-Ordner leere und dies bei jedem Seitenaufruf. Es gibt wohl noch eine Funktion von Smarty die mir nur bestimmte Templates löscht aber dafür muss ich erst einmal genau rausbekommen welche der Templates für mich die richtigen sind.

Ich werde mir deinen Hinweis natürlich auch einmal anschauen, vielleicht ist er ja besser als alle Lösungen, die ich mir ausgedacht habe :slight_smile: