Ingo: Performance: Frames vs. PHP

Hallo,

mir ist schon klar das ich mit Frames und PHP zwei Sachen zusammenwürfel die gar keinen zusammenhang haben.

Aber ich habe die letzten Seiten die ich erstellt habe nicht mit Frames gemacht, sondern immer nur ein PHP-Dokument benutzt, in das ich verschiedene andere PHP-Dateien per "include" eingebunden habe.
Also z.B. die Navigationsleiste, oder den Inhalt.

Meine Frage ist nun, ob diese Technik von der Performance einen großen Nachteil gegenüber Frames hat oder nicht. Klar kann ich mir vorstellen das der Quelltext durch PHP geparst werden muß, aber wieviel Zeit kostet das ?

Oder gibt es vielleicht eine andere Möglichkeit Webseiten zu gestalten, ohne das in jeder Datei derselbe Code vorkommt.
z.B. die Navigation bleibt bei vielen Seiten bis auf kleine Änderungen gleich.

Vor allem hat mich gestört, das wenn man dann gestalterische Änderungen vornehmen wollte gleich alle Dateien umschreiben mußte, wenn man keine Frames benutzt hat.

Also, in welcher Technik seht ihr klare Vorteile bzw. wie macht ihr Webseiten flexibel ?

mfg

Ingo

  1. yo ingo,

    mir ist schon klar das ich mit Frames und PHP zwei Sachen zusammenwürfel die gar keinen zusammenhang haben.

    hmm, damit stellst du deinen posting selbst ein wenig in frage und meiner meinung nach zurecht.

    Aber ich habe die letzten Seiten die ich erstellt habe nicht mit Frames gemacht, sondern immer nur ein PHP-Dokument benutzt, in das ich verschiedene andere PHP-Dateien per "include" eingebunden habe.
    Also z.B. die Navigationsleiste, oder den Inhalt.

    so wie du schon gesagt hast, frames und php haben keinen direkten bezug zueinander und schließen sich somit auch nicht aus. sprich du kannst sehr wohl mit php und frames arbeiten.
    der punkt ist der, das der grund frames oder php zu benutzen, ein ganz anderer ist. du kannst frames nicht durch php ersetzen und umgekehrt.

    Meine Frage ist nun, ob diese Technik von der Performance einen großen Nachteil gegenüber Frames hat oder nicht.

    siehe oben, wenn du eine seite dynamisch aufbauen willst, dann geht das einfach nicht mit frames. es macht wenig sinn nur reines html via php auszugeben, wenn der html-code nicht dynamisch erzeugt werden sollen.

    Oder gibt es vielleicht eine andere Möglichkeit Webseiten zu gestalten, ohne das in jeder Datei derselbe Code vorkommt.

    wenn die seiten das gleiche anzeigen sollen, dann muß auch der gleiche html-code erzeugt werden.

    Vor allem hat mich gestört, das wenn man dann gestalterische Änderungen vornehmen wollte gleich alle Dateien umschreiben mußte, wenn man keine Frames benutzt hat.

    nein, man versucht immer design und funkionalität voneinander zu trennen. selbst mit html habe ich die möglichkeit über css zu arbeiten.

    Also, in welcher Technik seht ihr klare Vorteile bzw. wie macht ihr Webseiten flexibel ?

    die frage kann so nicht beantwortet werden.

    Ilja

  2. Hi!

    mir ist schon klar das ich mit Frames und PHP zwei Sachen zusammenwürfel die gar keinen zusammenhang haben.

    Das ist ja schonmal was ;-)

    Aber ich habe die letzten Seiten die ich erstellt habe nicht mit Frames gemacht, sondern immer nur ein PHP-Dokument benutzt, in das ich verschiedene andere PHP-Dateien per "include" eingebunden habe.
    Also z.B. die Navigationsleiste, oder den Inhalt.

    Meine Frage ist nun, ob diese Technik von der Performance einen großen Nachteil gegenüber Frames hat oder nicht. Klar kann ich mir vorstellen das der Quelltext durch PHP geparst werden muß, aber wieviel Zeit kostet das ?

    Klar kostet das, das hängt allerdings von sehr vielen Faktoren ab, ich habe kürzlich gelesen dass es 2-10 mal langsamer ist mit PHP gegenüber HTML beim Apache (und das ist ein vergleichweise langsamer Webserver für statische Inhalte). Vor allem bei einfachen Hostingpaketen wird das extrem sein, da hier wenig optimiert wird/werden kann.

    Oder gibt es vielleicht eine andere Möglichkeit Webseiten zu gestalten, ohne das in jeder Datei derselbe Code vorkommt.

    Es gibt verschiedene Möglichkeiten. Das Zusammensetzen ist schon der richtige Ansatz, es ist nur fraglich ob es so effektiv ist, dieses Zusammensetzen bei jedem laden einer Seite erneut durchführen zu lassen. Dass sowas ineffizient ist liegt auf der Hand. Unter Performance-Gesichtspunkten ist die Lösung mit Frames in HTML sicher nicht die Schlechteste, aber aus diversen anderen Gründen nicht empfehlenswert (Suche mal im Archiv nach "Frames Seitengestaltung").

    Das Zusammensetzen der HTML-Seite kann auf verschiedenen Ebenen stattfinden, angefangen mit "Vorlagen" in HTML-Editoren wie Dreamweaver, über einfache eigene Scripte zum erstellen der HTML-Seiten aus den verschiedenen Komponenten, über HTML-Caches, die die Ausgabe der PHP-Scripte(also den vollst. HTML-Code) für eine bestimmte Zeit cachen (siehe PEAR[1]) bis hin zu Template-Lösungen wie Smarty[2], wo Du z.B. Header und Footer in alle Templates einbinden kannst, und z.B. bei Smarty kannst Du daraus zum einen automatisiert PHP-Code erzeugen(der gecached wird), so dass die Templates nur bei Änderungen geparst werden (was Dich alerdings nicht wirklich weit nach vorne bringt), aber es gibt auch hier die Möglichkeit die HTML-Ausgabe der Templates zu cachen.

    Aber bedenke dass es viele Dinge gibt die erheblich größeren Einfluss auf die Ladezeit Deiner Seiten haben, das wären z.B. der sinnvolle(sparsame) Umgang mit Bildern, und die entsprechend gut komprimiert, dazu Caching-Header des Webservers, und vor allem auch die gzip-komprimierte Auslieferung der HTML-Inhalte. Gerade bei Nicht-Breitband-Verbindungen fällt sowas erheblich mehr ins Gewicht als ob Du jetzt reines HTML, PHP oder SSI... einsetzt.

    Also, in welcher Technik seht ihr klare Vorteile bzw. wie macht ihr Webseiten flexibel ?

    Am flexibelsten sind sicherlich die Template-Lösungen, aber auch am komplexesten.

    Grüße
    Andreas

    [1] http://pear.php.net/package/Cache
    [2] http://smarty.php.net/

  3. Hallo,

    Meine Frage ist nun, ob diese Technik von der Performance einen großen Nachteil gegenüber Frames hat oder nicht. Klar kann ich mir vorstellen das der Quelltext durch PHP geparst werden muß, aber wieviel Zeit kostet das ?

    Wenn Du es nicht uebertreibst mit verschachtelten Includes,
    und wenn Du keine unsinnigen Datenbank-Abfragen und dergleichen
    bei jedem Seitenabruf drinhast, wuerde ich sagen:
    Der Effekt ist fuer den Benutzer nicht merklich.
    (Kommt natuerlich auch aud den Server an, und und und...)
    Sagen wir, wenn der Benutzer sowieso 2 oder 3 Sekunden
    auf die Seite wartet, spielen 0.5 Sekunden keine sooo grosse Rolle.

    Bei Frames gibt es vielleicht sogar mehr Traffic und vor allem
    Wartezeiten, gerade beim ersten Aufruf, wo zuerst mal die eine
    Datei (Frameset) und dann noch die zwei oder mehr andern
    Dateien (Inhalte) mitsamt ihren Bildern und Stylesheets
    geladen werden muessen.

    Oder gibt es vielleicht eine andere Möglichkeit Webseiten zu gestalten, ohne das in jeder Datei derselbe Code vorkommt.

    Na klar.
    Serverseitig z.B. SSI (Server Side Includes).
    Weiss allerdings nicht, ob das schneller ist als PHP
    bei reinen Includes.

    Ich weiss auch nicht, inwiefern sich bei PHP die verschiedenen
    Loesungen unterscheiden.
    Nach meinem Verstaendnis duerfte z.B. readfile() schneller sein
    als include()/require(), weil der Code nicht geparst wird.

    Die richtige Alternative, die keine Browser-Performance kostet,
    weil nur statische Dateien auf dem Server liegen und direkt
    ausgeliefert werden, sind die Loesungen mit den HTML-Editoren.
    Phase 5 - Includes
    Dreamweaver - Vorlagen oder Bibliotheken.
    u.s.w.

    Also, in welcher Technik seht ihr klare Vorteile bzw. wie macht ihr Webseiten flexibel ?

    Meine Meinung: Bleib bei PHP.
    Da hast Du am meisten Erweiterungsmoeglichkeiten.

    Gruesse,

    Thomas

  4. Hi,

    der Webserver wird von PHP-Skripten schon etwas gebremst, normalerweise hält sich das aber in Grenzen. Vor allem Caching holt dann wieder einiges an Performance rein aber natürlich ist das trotzdem noch langsamer als komplett ohne PHP.

    Meine Frage ist nun, ob diese Technik von der Performance einen großen Nachteil gegenüber Frames hat oder nicht.

    Wenn Du nicht schlampig programmiert hast: Nein.

    Oder gibt es vielleicht eine andere Möglichkeit Webseiten zu gestalten, ohne das in jeder Datei derselbe Code vorkommt.

    Mit SSI, was durch den geringen Funktionsumfang schneller als PHP ist.

    Vor allem hat mich gestört, das wenn man dann gestalterische Änderungen vornehmen wollte gleich alle Dateien umschreiben mußte, wenn man keine Frames benutzt hat.

    Muss man nicht, es gibt auch Offline-Lösungen. Der HTML-Editor Phase 5, z.B. bietet auch eine Include-Technik, bei der Einzelteile (Code-Blöcke in Dateien) bereits lokal in eine Datei eingefügt werden können. Das können auch andere Editoren leisten.

    Außerdem kann man ja PHP auch auf dem lokalen Webserver laufen lassen, d.h. man braucht keine Internet-Verbindung. Mit PHP kann man sich dann statische Seiten mit Templates, Includes oder wie auch immer zusammenbauen lassen und diese als Datei speichern. Diese werden dann einfach als gewöhnliche HTML-Dateien (oder GIF oder PDF, d.h. was man mit PHP erzeugt hat) per FTP auf den Webspace kopiert...

    MfG
    Danny

  5. Hallo Ingo,
    Ich will Dir mal ne praxisbezogene Antwort geben.
    Wenn Du einigermaßen sauber programierst (skriptest) dann wirst du keinen Unterschied merken auch wenn dieser dann tatsächlich messbar ist.
    Wir reden ja nicht über eine Domain mit 1000 Aufrufen pro Minute. sondern über eine normale Webpräsenz mit vielleicht 300 Aufrufen pro Tag.
    Und da sind solche Sachen vernachlässigbar.
    Nichts destotrotz solltest Du Dich um eine saubere Programmierweise mit Absätzen Kommentaren und auch stilistisch sauber bemühen.

    Viele Grüße aus Berlin

    TomIRL

  6. E7

    mir ist schon klar das ich mit Frames und PHP zwei Sachen zusammenwürfel die gar keinen zusammenhang haben.

    Doch. Frames können durch PHP ersetzt werden.

    Aber ich habe die letzten Seiten die ich erstellt habe nicht mit Frames gemacht, sondern immer nur ein PHP-Dokument benutzt, in das ich verschiedene andere PHP-Dateien per "include" eingebunden habe.
    Also z.B. die Navigationsleiste, oder den Inhalt.

    So sollte es auch ungefähr sein. Alternative: Alles in eine Datei, nur den Inhalt per include einbinden?

    Meine Frage ist nun, ob diese Technik von der Performance einen großen Nachteil gegenüber Frames hat oder nicht. Klar kann ich mir vorstellen das der Quelltext durch PHP geparst werden muß, aber wieviel Zeit kostet das ?

    In der PHP-Dokumentation gibt's ein fertiges Beispiel, dass die Ausführungszeit ermittelt. Ich tippe mal, dass ein einfachs include mit einer normalen Datei ca. 0,05 Sekunden Laufzeit benötigt.

    Vor allem hat mich gestört, das wenn man dann gestalterische Änderungen vornehmen wollte gleich alle Dateien umschreiben mußte, wenn man keine Frames benutzt hat.

    Ach ja? Wozu gibt's CSS?

    E7