Seite 1 von 1

Redis Cache löschen

Verfasst: Fr 29. Apr 2022, 13:16
von frog0815
Hallo,
ich verwende mit WE 9.1.1. die we:cache Tags mit Redis.
Wenn man nun aber einen inhaltlichen Fehler im Dokument eingepflegt hat und der Inhalt dann im Redis gespeichert ist, müsste man jetzt die ganze TTL Zeit abwarten bis der Fehler raus ist.
Damit Eingabefehler sofort korrigiert werden können, möchte ich gerne manuell den Cache löschen oder neu schreiben lassen. Ich habe dafür keine Funktion im WE Backend gefunden. Gibt es sowas nicht?
Ich habe mir mal die Keys im Redis angesehen. Alle keys fangen mit "we_" gefolgt von einem identischen 8-stelligen Code an. Was ist das für ein 8-stelliger Code, ist der auf Dauer immer gleich oder kann der sich ändern?
Darf ich pauschal einfach alle RedisKeys mit "we_*" löschen?
Oder gibt es eine elegantere Lösung um einen Fehler im Dokument im Redis zu aktualisieren?

Re: Redis Cache löschen

Verfasst: Fr 29. Apr 2022, 16:01
von mokraemer
Nein, an den Cache selbst solltest du normal nicht rangehen. Sicher kannst du einfach den ganzen redis-cache löschen; das macht WE nix aus, sonst wäre es ja kein Cache sondern ein Datenspeicher. Vorgesehen ist das aber weder vom Cache noch von uns.
Einiges macht WE mit dem Cache völlig automatisch. Also Änderungen innerhalb des <we:cache> Tags im Template werden erkannt und damit der Cache automatisch invalidiert.
Das Hauptproblem beim Cache steckt immer darin, wie man Änderungen erkennt. Wenn der Aufwand dafür größer ist wie die normale Ausgabe, macht das nämlich keinen Sinn.
Wenn du es mal manuell machen mußt, steht dir im Tag der Param "id" zur Verfügung, wo du im Template was anhängen kannst - nach der TTL kann man das wieder entfernen, oder eben mit der nächsten Änderung rückgängig machen.

Re: Redis Cache löschen

Verfasst: Mi 4. Mai 2022, 08:22
von frog0815
Wir haben Module als kleine Vorlagen erstellt die in verschiedenen Dokumenten eingebunden werden. Ich schätze mal, dass Änderungen in den Teilen der Module von WE nicht erkannt werden und somit im Cache dann nicht aktualisiert werden.

Den ganzen Cache will ich ja nicht löschen da ja noch andere Dinge im Cache außerhalb von WE abgelegt werden, somit werde ich eine Funktion bauen um alle Keys mit "we_" Prefix zu löschen.
Die Option die ID von WE Cache Tags zu ändern kommt nicht in Frage, da die Redakteure die den Content pflegen keine Zugriffsrechte für Vorlagen bekommen und überhaupt nicht in der Lage sind Code zu lesen und Änderungen vorzunehmen.
Schade, dass WE dafür keine Lösung hat.

Re: Redis Cache löschen

Verfasst: Mi 4. Mai 2022, 13:46
von mokraemer
Bist du sicher, das du den Cache richtig und sinnvoll verwendest?
Bei vielen Inhalten ist die DB genauso schnell. Es macht keinen Sinn alles zu cachen. Ich würde hier vermutlich nur das einzelne Modul und auch da nur diejenigen, die wirklich Zeit brauchen cachen.
Wenn du bei jeder Änderung den ganzen Cache killst, dann ist der auch nicht mehr sinnvoll.

Re: Redis Cache löschen

Verfasst: Do 5. Mai 2022, 08:06
von frog0815
Genau die einzelnen Module werden gecached.
Wie bereits geschrieben geht es nur um manuelle Korrekturen des Caches, nur falls mal etwas falsches eingepflegt wurde, was nicht bis zum TTL Ende online bleiben kann. Ich will auf keinen Fall bei jeder Änderung den Cache löschen.

Re: Redis Cache löschen

Verfasst: Do 5. Mai 2022, 22:41
von mokraemer
ok, verstehe. Also man kann mit der "id" natürlich versuchen einen Automatismus zu finden. Um damit den Cache bei Änderungen zu steuern. Das ist eben immer das komplizierteste am Cache - man muß erkennen, wann er gelöscht werden kann bzw. wann sich der Inhalt ändert - ohne die eigentliche Berechnung durchzuführen.
Da gibt es leider keine generelle Regel - aber man sollte auf jeden Fall prüfen, ob sich das Cachen überhaupt lohnt. Denn man handelt sich ja eben dadurch Ärger ein. (s. debug-Parameter beim Cache).