Ankündigung

Einklappen
Keine Ankündigung bisher.

Einfaches Caching

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Einfaches Caching

    Hallo,

    ich möchte gerne für mein CMS ein Cachen bereitstellen, allerdings weis ich nicht ob es sich es lohnt .

    Ich würde eine Funktion bereitstellen in der man "Cachename, Tabellen, datei" übergeben kann

    Dass heist zb cache('links|links_kat', 'links.htm')

    Dann schaut das Script in den Fall die 2 Tabellen mittels Show table an, also wann die letzte Änderung war, wenn sie neuer als die Änderung in einer Kontrolltabelle ist(in ihr wird gespeichert wann als letztes die html datei generiert worden ist), wird neu generiert ansonst die html nur ausgelsen

    und den Ordner /links wann er als letztes geändert wurde(falls das geht mit ordner)


    Lohnt sich sowas oder nicht was denkt ihr? Sind halt in den Fall 2 weitere Querys + Ordner änderung

    mfg

  • #2
    Können in der Datenbank "an Deinem Skript vorbei" Daten geändert werden?
    Wenn nicht, mach den Cache doch einfach ungültig (zum Beispiel durch Löschen der entsprechenden Datei), sobald neue Daten eingetragen werden.

    Kommentar


    • #3
      hm dann brauch ich ja in meiner seite keine mysql db dann könnte ich ja auch einfach immer ne datei erstellen bzw zb bei news eine überschreiben , das ist doch ent schneller ? oder sind die phpfile funktionen nun schon schneller als mysql?

      sonst könnt ich beim ersteller einer news auch gleich eine news.htm erstellen die dann eingebunden wird hmm

      mfg

      Kommentar


      • #4
        Naja die News in einer Datei zu speichern wäre doch umständlich. Daher belasse es ganz normal in der Datenbank, dann erstellst du eine Datei (als Cache) wo der fertige HTML Code etc. drinnen steht. Diese Datei wird IMMER angezeigt!

        Angenommen du erstellst jetzt einen neuen Newsbeitrag, dann kannst du, nachdem die News gespeichert wurde ja einfach mal die Cache Datei für die News löschen. Beim nächsten Seitenaufruf wird diese dann wieder neu generiert. Somit hast du
        1. die Vorteile einer Datenbank
        2. immer einen aktuellen Cache
        3. musst du jetzt nur noch das Cachen in eine Datei schreiben und das löschen dieser Cache Datei beim anlegen/ändern/löschen einer News.

        Alternativ könntest du der Datei auch einen Zeitpunkt mitgeben wann sie ausläuft. Und dann nimmst du immer diesen Cache her, sobald er ausläuft wird er neu generiert ... somit hast du zwar nicht immer einen aktuellen Cache, musst aber beim bearbeiten einer News nicht die Cache Datei löschen.

        Kommentar


        • #5
          Hallo,

          ich habe mal mein altes Thema wieder ausgegraben.

          Ich habe das Cachen von Seiten/Modulen/Menü umgesetzt gehabt indem ich überprüft habe ob eine Cachedatei vorhanden ist, wenn ja hab ich diese angezeigt.

          Wenn die Datei nicht vorhanden war wurde am Ende der Seite mit den Buffer eine Datei erstellt... Beim ändern eines Modules/Seite/Menü wurde diese Cache Datei wieder gelöscht.

          Also der Weg von Flor1an



          Nun habe ich aber folgendes Problem:


          In der ersten Zeile meiner Module/Seiten steht eine Funktion , die den Zugriff auf den Inhalt nicht zulässt, wenn man nicht die nötigen Rechte hat.

          Sprich wenn ich nun das Cachen weiterhin mache kann man in den Cache Ordner und trotzdem die Cachedatei mit vollen Inhalt anzeigen...

          '.htacess' funktioniert leider nicht überall.


          Bei dem Cachen vom Menü ist es noch problematischer, jeder User kann eben manche Menüpunkte sehen oder nicht sehen...

          Habt ihr eine Idee wie man bei so einem Rechtesystem trotzdem Cachen kann.


          mfg Dominik

          Kommentar


          • #6
            Also das Verzeichnis wo die gecachten Dateien liegen musst du auf jeden Fall in irgendeiner Form schützen, sei es dass du es unterhalb des doc-roots anlegst oder in einem ordner wo du eine .htaccess mit DENY FROM ALL unterbringst. Die Dateien musst du dann halt durch php durchschleifen.

            Abhängig von deinem Rechte-System und deinem Cache-System kannst du ja z.b. in den Schlüssel oder den Dateinamen den du zur identifizierung nutzt die Benutzer-Gruppe oder den benutzer mit einbauen.

            Also anstatt der Überprüfung von "cache/index.html" hast du dann z.b. "cache/index.html-AdminGroup" oder wenn das ganze Benutzer-basiert ist: "cache/index.html-Username".

            Kommentar


            • #7
              Zitat von robo47 Beitrag anzeigen
              Also das Verzeichnis wo die gecachten Dateien liegen musst du auf jeden Fall in irgendeiner Form schützen, sei es dass du es unterhalb des doc-roots anlegst oder in einem ordner wo du eine .htaccess mit DENY FROM ALL unterbringst. Die Dateien musst du dann halt durch php durchschleifen.

              Abhängig von deinem Rechte-System und deinem Cache-System kannst du ja z.b. in den Schlüssel oder den Dateinamen den du zur identifizierung nutzt die Benutzer-Gruppe oder den benutzer mit einbauen.

              Also anstatt der Überprüfung von "cache/index.html" hast du dann z.b. "cache/index.html-AdminGroup" oder wenn das ganze Benutzer-basiert ist: "cache/index.html-Username".
              Das wäre eine Möglichkeit, außer htaccess oder unterhalb des roots kann ich die nicht schützen?


              Ja okay das mit Gruppen funktioniert, und sooo viele Daten werden das auch nicht , kann man ja eine sperre reinhauen...

              mfg

              Kommentar


              • #8
                Zitat von Dominik Beitrag anzeigen
                Das wäre eine Möglichkeit, außer htaccess oder unterhalb des roots kann ich die nicht schützen?
                Schützen bedeutet der User kann via Web nicht rankommen, das schaffst du entweder indem man sie garnicht via Web erreichen kann (unterhalb des doc-root) oder indem man dem Webserver sagt auf das Verzeichnis darf niemand zugreifen (z.b. .htaccess mit DENY FROM ALL, passwort-schutz via .htaccess .... ).

                Zitat von Dominik Beitrag anzeigen
                cache/index.html-Username <- Das wäre wohl ziemlich gut, aber dann werden das ziemlich viele Dateien und ob sich so noch ein Caching lohnt,...

                mfg
                Wenn JEDER User eine andere Nav haben kann, musst du sie auch für JEDEN Cachen, wenn das ganze gruppenbasiert ist, vereinfacht es sich halt, ob sich das Caching dann noch lohnt musst du ausprobieren.

                Kannst dir ja vielleicht auch mal ein paar Caching-Klassen anschauen, dort arbeitest du dann direkt key-basiert und musst dich um das Datei-Handling und so nicht mehr kümmern.

                Cache
                Cache_Lite
                Zend Framework: Documentation

                Letzteres bietet auch an bei Dateibasiertem Caching verschachtelte Ordner zu erstellen, falls es zu viele Dateien pro Ordner werden sollten und neben Dateien als Backend auch APC, XCache oder Memcache, falls du darauf Zugriff hast, aber da du scheinbar nichtmal .htaccess nutzen kannst, gehe ich mal von einfachem Webhosting aus, da fällt sowas natürlich weg.

                Kommentar


                • #9
                  indem man sie garnicht via Web erreichen kann (unterhalb des doc-root)
                  unterhalb ? über oder neben dem doc-root.

                  Kommentar

                  Lädt...
                  X