Caching

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

  • Caching

    Welche Caching-Methode ist am geschicktesten, wenn ich ganze Seiten auf dem Server cachen will?

    Kann mir da jemand einen Tipp geben, ob das in PHP selbst möglich ist, oder ob ich mir da was aus dem Netz besorgen muss?

    Gehört habe ich bisher lediglich ein Bischen von PEAR Cache, APC und ZendCache.

  • #2
    kommt darauf an, wie variabel und aktuell deine Seiten sein sollen.

    meiner einer:

    - bei meinen Templates ist immer der Arbeitschritt des Auswertens nötig, welcher aber immer gleich ist. Also beschleunige ich dies, indem das System die bereits ausgewerteten Templates als Datei speichert (für den Templatebearbeiter sogut wie nicht lesbar) und dann zum arbeiten direkt diese nimmt

    - bei meiner Datenbankanbindung kann ich für jede SQL-Abfrage ein Timeout bestimmen, dh. eine Abfrage wird gemacht, und wenn ein Timeout > 0 gesetzt ist, wird das Ergebniss in eine Datei geschrieben. Beim nächsten Ausführen dieser Abfrage, wird geprüft ob die vorher erstellte Datei noch im Timeout liegt und wenn ja wird nur diese includet. Spart unheimlich Datenbankressourcen! Selbst ein Timeout von 60 sek. bringt sehr viel bei einer entsprechend stark frequentierten Seite.
    Die Daten sind dann nicht 100% aktuell, aber wer merkt das, daß zB die Forumübersicht bei einem großen Board nur alle 60 sek. neu generiert wird Solche aufwendigen Abfragen wie die Anzeige der Statistik, wird bei mir (mit eingeschaltetem Cache) nur alle 15 min erneuert

    - außerdem kannst du komplett fertig generierte Seiten oder Teile derselben als Datei auf dem Server ablegen. das spart dir dann bei Aufrufen das ständige neue Generieren. Schau doch mal, was sich an deiner Seite nicht so oft ändert. zB. bekommt deine Seite jeden Tag eine anderen Kopf mit aktuellen News - diesen Teil kann man dann immer schön für 24h cachen
    TBT

    Die zwei wichtigsten Regeln für eine berufliche Karriere:
    1. Verrate niemals alles was du weißt!


    PHP 2 AllPatrizier II Browsergame

    Kommentar


    • #3
      Ich habe ebenfalls so ewas wie eine Statistikseite mit viel Datenbankabfragen und habe diese auch schon extrem minimiert. Die Darstellung dauert aber noch zu lang, wenn ich die komplette Seite cachen könnte und diese dann ohne DB darstellen könnte, schätze ich, dass sich die Darstellungszeit halbiert. Deshalb möchte ich wissen, ob mir jemand ein 'Caching-System', das dafür geeignet und auch kostengünstig (open source?) ist, empfehlen kann?

      Kommentar


      • #4
        mach doch selber für die eine Seite:


        1. Seite wird aufgerufen
        2. gibt es eine gecachte Seite ?
        3. JA => Zeit der Seite prüfen! Ist noch aktuell ?
        3.1 JA => Seite ausgeben + fertig
        3.2 NEIN => weiter mit 4.
        4. NEIN => Seite aus DB generieren
        5. Seite cachen (irgendwohin auf Platte schreiben)
        6. Seite ausgeben
        TBT

        Die zwei wichtigsten Regeln für eine berufliche Karriere:
        1. Verrate niemals alles was du weißt!


        PHP 2 AllPatrizier II Browsergame

        Kommentar


        • #5
          Soll ich dann die ganzen HTML Befehle in eine Text-Datei schreiben, oder wie meinst du das mit dem ablegen?

          und wenn ja, wie schreibe ich das ganze 'echo'-Zeug in diese Datei?

          Kommentar


          • #6
            wenn du deine Seite zusammengebaut hast,
            am besten alles in EINEM String.
            machst du:
            PHP-Code:
            $fp fopen './pfad/Datename.irgendwas''w' );
            fwrite$fp$meine_html_seite);
            fclose$fp ); 
            wenn du keinen einzelnen String hast, mußte die Datei Stückchen für Stückchen schreiben.

            später das laden geht so:
            PHP-Code:
            // gecachte Seite vorhanden ?
            // Zeit müßte noch überprüft werden
            if (  file_exists'./pfad/Datename.irgendwas' ) )
            {
               
            $meine_html_seitefile'./pfad/Datename.irgendwas' );
               echo 
            $meine_html_seite;
               exit(); 
            // script ist schon fertig

            TBT

            Die zwei wichtigsten Regeln für eine berufliche Karriere:
            1. Verrate niemals alles was du weißt!


            PHP 2 AllPatrizier II Browsergame

            Kommentar


            • #7
              Danke, ich werd das mal probieren.

              Lazy

              Kommentar


              • #8
                Bei mir kommt da leider schon beim schreiben ein Fehler:

                Warning: fopen("Cache/CacheYear.bla","w") - Permission denied in test/overview_year.php3 on line 189

                line189:
                $fp = fopen("Cache/CacheYear.bla","w");

                Kommentar


                • #9
                  hat das verzeichnis die entsprechenden Rechte, damit das Skript darauf zugreifen kann ??

                  gruss

                  Kommentar


                  • #10
                    versuch mal
                    PHP-Code:
                    $fp fopen("./Cache/CacheYear.bla","w"); 
                    TBT

                    Die zwei wichtigsten Regeln für eine berufliche Karriere:
                    1. Verrate niemals alles was du weißt!


                    PHP 2 AllPatrizier II Browsergame

                    Kommentar

                    Lädt...
                    X