[Templates] Compilieren oder cachen ?

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

  • Slava
    antwortet
    Original geschrieben von PhilippM
    Tja ich nehme das Geheimhaltungsprinzip der OOP nunmal ernst. Ich will nur wissen, was die Objekte tun, nicht wie.
    Die Idee finde ich gut, aber auf meine weise habe ich Antwort auf deine Frage schneller als du gefunden.
    Ausserdem habe ich parameter in ob_start entdeckt.
    Und was noch!
    Objecte, die nicht gut genug documentiert sind, oder wie in deinem Fall nicht ausreichend Informationen liefern, bringen für fremde Menschen kaum Vorteile und sind damit als Haufen unbekannten code-fragmenten zu betrachten.
    In manchen Fällen ist sogar neuprogrammieren leichter als in Logik von anderen Menschen einzusteigen.

    Einen Kommentar schreiben:


  • PhilippM
    antwortet
    Original geschrieben von Slava
    und auch in quelcode sofort zu sehen
    Tja ich nehme das Geheimhaltungsprinzip der OOP nunmal ernst. Ich will nur wissen, was die Objekte tun, nicht wie.

    Einen Kommentar schreiben:


  • onemorenerd
    antwortet
    Es gibt jede Menge Unterschiede zwischen dem originalen englischen Manual und dessen deutscher Übersetzung. Vermutlich ist die deutsche dabei noch eine der besseren Übersetzungen ...

    Da die Kommentare aber ohnehin in englisch sind und manchmal mehr Information enthalten als der Text obe drüber, sollte man sowieso des Englischen mächtig sein, wenn man nichts verpassen will.

    Einen Kommentar schreiben:


  • Slava
    antwortet
    Original geschrieben von TobiaZ
    das sagen nur leute, die sich auf die deutsche übersetzung verlassen http://de2.php.net/manual/en/function.ob-start.php
    tatsächlich
    auf english stehen parameter drin!!!
    auf deutsch nur void!!!
    also muss ich doch dokumentation in feindlicher sprache anschauen

    Einen Kommentar schreiben:


  • TobiaZ
    antwortet
    das sagen nur leute, die sich auf die deutsche übersetzung verlassen http://de2.php.net/manual/en/function.ob-start.php

    Einen Kommentar schreiben:


  • Slava
    antwortet
    und auch in quelcode sofort zu sehen
    PHP-Code:
     if ((time() - filemtime($this->cache_filename)) < $this->cache_lifetime)
      {
      
    readfile($this->cache_filename);
      exit;
     }
    }
    ob_start( array( &$this'cache_callback' ) );


    //und dann
    function cache_callback $output )
    {
      if (
    $hd = @fopen($this->cache_filename'w'))
       {
        
    fputs($hd,  $output);
        
    fclose($hd);
       }
      return 
    $output;

    was ich aber entdeckt habe, dass ob_start mit parameter arbeiten kann.
    das steht nicht in documentation, aber in einem kleinem beispiel unten.
    http://de2.php.net/manual/de/functio...tart.php#61057

    Einen Kommentar schreiben:


  • penizillin
    antwortet
    During the following script execution, use_cache captures all output that is send to the browser and stores it in a temporary cache file.

    Einen Kommentar schreiben:


  • PhilippM
    antwortet
    THX @ onemorenerd

    Das löst ja dann mein Problem. Einfach use_cache und es macht genau das, was ich mir vorgestellt habe.

    Einen Kommentar schreiben:


  • onemorenerd
    antwortet
    Der Cache speichert die Ausgabe, die an den Browser gesendet wird. Also kein PHP, es sei denn, du gibst PHP aus, was aber dann nicht mehr interpretiert werden würde, sondern as-is aus dem Cache an den Client geht.

    Hättest du mit einem Test aber leicht selbst herausfinden können - einfach mal use_cache() in ein Script eingebaut, aufgerufen und das Cache-File angeschaut.

    Einen Kommentar schreiben:


  • Slava
    antwortet
    ups

    bitte um entschuldigung wegen falschen informationen.

    Einen Kommentar schreiben:


  • PhilippM
    antwortet
    Danke für die Antworten!

    okay, also es würde was bringen.

    @slava: Ich spreche von smarttemplate, nicht von Smarty !! Smarty hat mir zuviel unnötigen Ballast.


    Die Doku (leider nur ein sehr unvollständiges Wiki) sagt folgendes:

    void use_cache ( [mixed key] )

    Activates the built in output cache. Checks if the executed script (ref. $_SERVER[REQUEST URI]) has produced any output whithin a certain period of time. If so, use_cache sends the cached page to the standard output (Browser) and terminates any further script execution.

    If no valid output is available, use_cache activates the PHP output buff and returns to the script form which it was called. During the following script execution, use_cache captures all output that is send to the browser and stores it in a temporary cache file. The filename of this cach file is a unique key that is created by modulating the current script filename, its GET-parameters (REQUEST_URI) and the optional key parameter.
    Heißt das jetzt, das HTML-code gecached wird oder wieder nur compiliertes Template (PHP-Code). Ich blick da nicht ganz durch.

    Einen Kommentar schreiben:


  • Slava
    antwortet
    ja natürlich gibt es in smarty cache unabhängig von vorcompillierten php dateien.
    $smarty-> new Smarty;
    $smarty->caching=true;
    wenn du cache für eine bestimmte dauer einstellen möchtest
    $smarty->caching=2;
    $smarty->cach_lifetime=900;//cachen für 15 minuten

    Einen Kommentar schreiben:


  • TobiaZ
    antwortet
    stehen in der regel aber irgendwelche dynamischen inhalte (forumübersicht, Bannerrotation, counter/useronline, ...) im weg. Ansonsten ist es aber natürlich sehr zu empfehlen.

    Einen Kommentar schreiben:


  • penizillin
    antwortet
    könnte man.
    und es würde.

    ob es mit smarttemplate geht, weiß ich nicht, musst du in der doku schauen.
    lässt sich aber auch manuell recht schnell basteln.

    Einen Kommentar schreiben:


  • PhilippM
    hat ein Thema erstellt [Templates] Compilieren oder cachen ?.

    [Templates] Compilieren oder cachen ?

    Hallo,

    ich benutze die Templateengine smarttemplate http://smarttemplate.sourceforge.net/

    Sie benutzt folgenden Mechanismus, um Anfragen schneller abwickeln zu können: Die Template wird in eine php-Datei kompiliert, die für eine bestimmte Zeit gespeichert bleibt. Wird in dieser Zeit die Seite wieder angefragt, wird statt die Template erneut zu parsen, direkt die php-Datei ausgeführt. Diese compilierte php-DAtei sieht dann also aus wie hard-coded ohne templates halt.

    Jetzt stellt sich mir die Frage: Kann man da nicht eigentlich noch einen Schritt weitergehen und solche Seiten (Startseite zum Bleistift), die selten geändert werden, nicht gleich komplett als HTML-Ausgabe speichern und dann zum client schicken? Also nicht nur nach php compilieren, sondern direkt nach html parsen und speichern?

    Würde das performancemäßig was bringen?
    Wie könnte man das mit smarttemplate realisieren ?
    Zuletzt geändert von PhilippM; 17.06.2006, 16:43.
Lädt...
X