somebody: Gibt es eine Caching-Technologie als mit expires?

Hallo,

Gibt es denn eine andere Technologie, Views, etc. im Cache neu zu erstellen als mit Erkennung über "Ablaufdatum"?
Da wird der Cache ja viel zu oft erneuert und falls sich mal doch was ändert, zu spät erneurt.

Da man nicht immer einfach die View bei Veränderung eines Artikels/... löschen kann,
da es auch noch eine Artikel-Übersicht, ... gibt, die ernuert werden sollte.

Ich hab mir gedacht, dass man so eine Art Abhängigkeit zwischen Caches macht:
Wird z.B. ein Artikel verändert, so wird die gecachte View des Artikels und der Artikel-Übersicht gelöscht.
Jetzt weiß ich nicht, wie ich das umsetzten soll oder ob ich nicht eine andere Lösung suchen soll.

Kann mir jemand helfen?

lg somebody

  1. Hi,

    Wird z.B. ein Artikel verändert, so wird die gecachte View des Artikels und der Artikel-Übersicht gelöscht.

    der Server hat keinerlei Zugriff auf den Cache eines Client.

    Jetzt weiß ich nicht, wie ich das umsetzten soll

    Dein Wissen scheint diesbezüglich also vollständig zu sein.

    oder ob ich nicht eine andere Lösung suchen soll.

    Die meisten Clients senden einen If-Modified-Since-Header mit. Nutze ihn.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hallo,

      Entschuldigung, ich hab vergessen, das zu sagen:
      Ich meine den Cache am Server, wie z.B. gecachte Seiten, um nicht jedes Mal die Datenbank zu fragen.

      Im Fall vom Client ist die Lösung mit If-Modified-Since ok.

      lg somebody

  2. Hi!

    Gibt es denn eine andere Technologie, Views, etc. im Cache neu zu erstellen als mit Erkennung über "Ablaufdatum"?

    Ja, dem Cache sagen, was veraltet ist, damit er sich die neue Version holen kann oder die neue Version drüberschreiben. Kommt auf die Arbeitsweise des Cache an.

    Da wird der Cache ja viel zu oft erneuert und falls sich mal doch was ändert, zu spät erneurt.

    Dann nimm keine Ablaufdatumssteuerung, wenn diese deinen Bedürfnissen nicht entspricht.

    Da man nicht immer einfach die View bei Veränderung eines Artikels/... löschen kann,
    da es auch noch eine Artikel-Übersicht, ... gibt, die ernuert werden sollte.

    Ist das so? Sicher nicht mit jedem Cache-System.

    Ich hab mir gedacht, dass man so eine Art Abhängigkeit zwischen Caches macht:

    Denken kann man sich viel. Für konkrete Lösungen muss man die konkreten Voraussetzungen kennen. Informiere dich (und uns) genauer.

    Lo!

    1. Hallo

      Ja, dem Cache sagen, was veraltet ist, damit er sich die neue Version holen kann oder die neue Version drüberschreiben.

      Und wie finde ich heraus, was veraltet ist?

      Dann nimm keine Ablaufdatumssteuerung, wenn diese deinen Bedürfnissen nicht entspricht.

      Aber ich weiß nicht, auf welche Art ich es sonst lösen sollte.

      Ist das so? Sicher nicht mit jedem Cache-System.

      Meinst du andere Cache-Systeme mit Ablaufdatumsteuerung oder andere Lösungen?

      Für konkrete Lösungen muss man die konkreten Voraussetzungen kennen.

      Im Grunde bräuchte ich eine generische Lösung.

      Ein Paar Beispiele:
      -Artikel: Wird ein Artikel geändert, soll die Übersicht der Kategorie und die Seite auf der der Artikel gezeigt wird, erneurt werden
      -Bilder: Wird ein Bild-Titel/... geändert, muss die Übersicht und die Detailansicht erneurt werden

      lg somebody

      1. Hi,

        Ein Paar Beispiele:
        -Artikel: Wird ein Artikel geändert, soll die Übersicht der Kategorie und die Seite auf der der Artikel gezeigt wird, erneurt werden
        -Bilder: Wird ein Bild-Titel/... geändert, muss die Übersicht und die Detailansicht erneurt werden

        Dann überlege dir, wie du diese Abhängigkeiten so abbildest, dass „der Cache“ erkennen kann, auf welche Ressourcen/Dateien sich eine Änderung alles auswirkt.

        Die „Übersichten“ involvieren ja ggf. eine Blätter-Funktion.
        Bei reiner Änderung eines Eintrages muss nur die Seite, auf der dieser sich befindet, neu generiert werden;
        wird hingegen „mittendrin“ ein Eintrag gelöscht oder hinzugefügt, hat das ggf. auch Auswirkungen auf alle nachfolgenden Blätter-Seiten ...

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        1. Hallo,

          Dann überlege dir, wie du diese Abhängigkeiten so abbildest, dass „der Cache“ erkennen kann, auf welche Ressourcen/Dateien sich eine Änderung alles auswirkt.

          Wie wär es, wenn ich pro gecachtem Objekt eine Datei mit einer Auslistung der Abhänigen Objekte mache und falls ein Objekt auf dirty setze, alle Objekte, die in der Datei aufgelistet sind, auch auf dirty setze?
          Da gäbe es das Problem, dass gleichzeitig Zugriffe auf die Datei gemacht werden könnten und Inkonsistenzen auftretten.

          Die „Übersichten“ involvieren ja ggf. eine Blätter-Funktion.

          Die möchte ich auf jeden Fall auch machen.

          Bei reiner Änderung eines Eintrages muss nur die Seite, auf der dieser sich befindet, neu generiert werden;
          wird hingegen „mittendrin“ ein Eintrag gelöscht oder hinzugefügt, hat das ggf. auch Auswirkungen auf alle nachfolgenden Blätter-Seiten ...

          Unterschiedliche Abhängigkeiten sind bei meiner Lösung mit Dateien leider noch nicht einberechnet.
          Wie könnte man das lösen?

          lg somebody

      2. Hi!

        Ja, dem Cache sagen, was veraltet ist, damit er sich die neue Version holen kann oder die neue Version drüberschreiben.
        Und wie finde ich heraus, was veraltet ist?

        Derjenige (Vorgang) der Daten aktualisiert, muss den Cache aktualisieren (lassen).

        Dann nimm keine Ablaufdatumssteuerung, wenn diese deinen Bedürfnissen nicht entspricht.
        Aber ich weiß nicht, auf welche Art ich es sonst lösen sollte.

        Du musst doch wissen, durch welche Kriterien die Daten veralten.

        Ist das so? Sicher nicht mit jedem Cache-System.
        Meinst du andere Cache-Systeme mit Ablaufdatumsteuerung oder andere Lösungen?

        Ich weiß nur, dass es Cache-Lösungen gibt, bei denen man Elemente auf dirty setzen kann, woraufhin bei einer Anforderung eine neue Version erstellt wird.

        -Artikel: Wird ein Artikel geändert, soll die Übersicht der Kategorie und die Seite auf der der Artikel gezeigt wird, erneurt werden
        -Bilder: Wird ein Bild-Titel/... geändert, muss die Übersicht und die Detailansicht erneurt werden

        Dann musst du die Abhängigkeiten suchen und sie erneuern oder als veraltet kennzeichnen.

        Lo!

        1. Hallo,

          Derjenige (Vorgang) der Daten aktualisiert, muss den Cache aktualisieren (lassen).

          Das weiß ich, aber was sollte alles aktualisiert werden?

          Du musst doch wissen, durch welche Kriterien die Daten veralten.

          Nicht nach einer bestimmten Zeit, sondern nach einer bestimmten Aktion.

          Ich weiß nur, dass es Cache-Lösungen gibt, bei denen man Elemente auf dirty setzen kann, woraufhin bei einer Anforderung eine neue Version erstellt wird.

          Warum wird das Element nicht gleich gelöscht?

          Dann musst du die Abhängigkeiten suchen und sie erneuern oder als veraltet kennzeichnen.

          Aber wie soll ich sie erkennen?

          lg somebody

          1. Hi!

            Derjenige (Vorgang) der Daten aktualisiert, muss den Cache aktualisieren (lassen).
            Das weiß ich, aber was sollte alles aktualisiert werden?

            Alles was im Cache aufgehoben wurde und nun nicht mehr stimmt. Diese Abhängigkeiten musst du irgendwie ermitteln oder irgendwo extra ablegen.

            Ich weiß nur, dass es Cache-Lösungen gibt, bei denen man Elemente auf dirty setzen kann, woraufhin bei einer Anforderung eine neue Version erstellt wird.
            Warum wird das Element nicht gleich gelöscht?

            Weiß ich nicht, da musst du dir die vorhandenen Cache-Lösungen mal genauer ansehen. Dabei kann man auch die eingebauten Funktionalitäten mit dem eigenen Bedarf oder den eigenen Vorstellungen vergleichen und vielleicht erkennen, dass man das eine oder andere auch ganz gut gebrauchen kann, aber noch garnicht daran gedacht hat.

            Dann musst du die Abhängigkeiten suchen und sie erneuern oder als veraltet kennzeichnen.
            Aber wie soll ich sie erkennen?

            Sowas muss man zunächst wissen, weil diese Abhängigkeiten fachliche Anforderungen sind. Und dann muss man dahergehen und schauen, wie man diese Abhängigkeiten am besten speichert. Wenn die Dokumente a, b und c das Element x beinhalten und sich dieses ändert, muss deine Datenhaltung ergeben, dass a, b und c nicht mehr aktuell sind.

            Lo!

            1. Hallo,

              Und dann muss man dahergehen und schauen, wie man diese Abhängigkeiten am besten speichert.

              Und wie speichert man sie am besten?

              lg somebody

              1. Hi!

                Und dann muss man dahergehen und schauen, wie man diese Abhängigkeiten am besten speichert.
                Und wie speichert man sie am besten?

                Da ich nicht weiß, welche Art Abhängigkeiten du hast, kann ich da nichts Konkretes vorschlagen. Du wirst alle Dinge durchgehen müssen und für jedes überlegen, welche Abhängkeiten zu anderen existieren. Dabei wirst du feststellen, dass das ein oder wenige Muster sind, die immer wieder auftauchen. Und dazu muss dann die beste Organisationsform gefunden werden. Vielleicht ist es ein Array mit einem Verweisen auf Dinge als Keys und dazu jeweils ein Array mit Verweisen auf die anderen abhängigen Dinge. Wenn x geändert wird, beeinflusst das: a, b und c (die x enthalten). Man kann es auch umgekehrt sortieren, so dass man a, b und c von (unter anderem) x abhängig sind.

                Lo!

                1. Hallo,

                  Ich hab die Abhängigkeiten genauer studiert und bin auf folgende Muster gekommen:

                  • Es gibt so eine Art Ordner, in dem Objekte eingeordnet werden können. Allerdings können Objekte in mehreren Ordnern eingeordnet werden (z.B. Tag-Ordner)
                  • Es gibt Seiten, das sind Teile von Ordner mit maximaler Anzahl von Objekten
                  • Dann gibt es noch Objekte wie Artikel oder Bilder, die manchmal mehrteilig sind, aber nicht trennbar (z.B. mehrseitige Artikel)
                  • Ordner können auch in andere Ordner getan werden

                  Kann man mit diesen Informationen das Problem schon lösen oder muss ich noch konkreter werden?
                  Nachher sollte man noch weitere Objekttypen (z.B. Events) hinzufügen können, ohne das Caching zu ändern.

                  lg somebody

                  1. Hi!

                    Ich hab die Abhängigkeiten genauer studiert und bin auf folgende Muster gekommen: [...]
                    Kann man mit diesen Informationen das Problem schon lösen oder muss ich noch konkreter werden?

                    Wenn das alle Abhängigkeiten sind, solltest du jetzt an die Implementierung gehen können. Da du deinen Bedarf analysiert hast, kannst du dir nun vom öffentlichen Angebot ein Cache-System suchen, das Abhängigkeiten in mehreren Ebenen berücksichtigen kann und dann versuchen deine Abhängigkeiten dem System bekanntzugeben.

                    Lo!

                    1. Hallo,

                      Bis jetzt hab ich nur das Caching von Zend gefunden, da gibts so eine Markierung, aber ich blick da nicht ganz durch: Kann Zend's Caching das, was ich brauche?
                      Außerdem ist Zend ja ein Framework, da müsste ich mehr als nur das Caching verwenden, oder?

                      Ansonsten habe ich nur Systeme ohne Abhängigkeiten gefunden.
                      Gibt es denn noch keine Caching-Systeme mit Abhängigkeiten?

                      lg somebody

                      1. Hi!

                        Bis jetzt hab ich nur das Caching von Zend gefunden, da gibts so eine Markierung, aber ich blick da nicht ganz durch: Kann Zend's Caching das, was ich brauche?

                        Zumindest kann man Tags anbringen und alle Objekte mit dem selben Tag löschen.

                        Außerdem ist Zend ja ein Framework, da müsste ich mehr als nur das Caching verwenden, oder?

                        Nein, das ZF ist eigentlich so entworfen, dass man auch Teile einzeln verwenden kann.

                        Ansonsten habe ich nur Systeme ohne Abhängigkeiten gefunden.
                        Gibt es denn noch keine Caching-Systeme mit Abhängigkeiten?

                        Zur Not kannst du selbst die Abhängigkeiten verwalten, indem du dir einen Zugriffslayer erstellst, der zu jedem Cache-Element die zusätzlichen Daten vorhält.

                        Lo!