Palme: include, if-Anweisung oder wie gehabt, was ist schneller?

Hallo,

kann man/jemand Aussagen darüber treffen, wie eine Seite schneller geladen wird:

ich habe eine index.php, in der die Inhalte immer dynamisch eingebunden werden, d.h., wenn der User durch betätigen eines Links eine Seite auswählt, wird immer wieder diese index.php geladen, und die entsprechenden Inhalte mittels if-Abfragen per include eingefügt. Das gleiche Vorgehen wende ich auch bei den Stylesheets an.

Macht dies Sinn, oder ist es besser, entweder:

1.)
in die index.php alle möglichen unterschiedlichen Inhalte einzufügen (also den Code), und den jeweils zutreffenden Inhalt dann per if-Abfrage anzuzeigen, z.B.

(Schema)

if(link_gewaehlt == startseite){ HTML-Code Startseite  }
if(link_gewaehlt == impressum){ HTML-Code Impressum  }
usw. und das alles in der einen index.php

oder
2.)
für jede Seite eine eigene Datei zu erstellen (ich sage mal vorsichtig, -die normale Variante?)

Bei ganz oben genanntem Beispiel könnte ich mir vorstellen, dass es länger dauert, da ja "PHP" immer erst die Datei "suchen" muss, diese einbinden muss, um anschließend die index.php dann zu laden/darzustellen.

Deshalb dachte ich mir vielleicht, die unter 1.) genannte Variante sei vielleicht schneller, da PHP ja nur dann die jeweilige if-Anweisung ausführt, wenn die Bedingung zutrifft, und der HTML-COde
steht ja dann schon gleich fertig in der Datei, und muss nicht erst von woanders her eingebunden werden.
Oder wird trotzdem die komplette Datei irgendwo geladen?

Wenn das Grundgerüst in einer Datei immer das gleiche ist (bestimmte Elemente wie z.B. Logo und die Navigation), werden diese dann nicht schneller geladen, wenn immer wieder die Datei mit dem selben Namen aufgerufen wird. Also in etwa so, dass der Browser oder PHP sich "denkt": Aha, da soll ich schon wieder diese Datei laden, die kenne ich ja schon, oben links hin kommt das Logo... usw." (Bitte das mit dem "denken des Browsers" oder von PHP nicht wortwörtlich nehmen).

Kann jemand erklären wie es am schnellsten geht, ohne dabei mal die Übersichtlichkeit und Handbarkeit der Dateien während des "Programmierens" zu berücksichtigen.

Grüße

Palme

  1. Ich denke das es dir leichter fallen wird wenn du seiten machst und sie via include einfügst.
    Mache ich auch so bei mir und ist relativ schnell.

    Siehe > http://www.pks-design.ch

    Gruss Pat

    1. Danke an Euch schonmal,

      aber viel schlauer sind wir ja jetzt noch nicht.

      Aber brennden interessieren tut mich jetzt auch die Frage, was eine Suchmaschine von dieser Vorgehensweise hält.

      Grüße

      Palme

      1. hi,

        aber viel schlauer sind wir ja jetzt noch nicht.

        warum?
        die antwort von louis würde ich unterschreiben - das includen von dateien, sofern in einem halbwegs "normalen" umfang, bremst kaum aus.

        Aber brennden interessieren tut mich jetzt auch die Frage, was eine Suchmaschine von dieser Vorgehensweise hält.

        die suchmaschine bekommt, ebenso wie der browser, _eine_ html-seite ausgeliefert.
        mit welcher technik die also vom server zusammnegebastelt wurde, geht der SuMa also am allerwertesten vorbei.

        lediglich an links in der form "index.php?seite=xyz" stören sich manche SuMas, weil sie daran sofort dynamisch generierte seiten erkennen, und diese nicht so besonders mögen (weil sie zu schnell veralten bzw. ihre inhalte ändern könnten).
        aber auch dagegen kann man etwas tun, in dem man mit mod_rewrite auf einem apache-server oder ähnlichen techniken "suchmaschinenfreundliche links" (<- stichwort zum suchen, falls interssiert) generiert.

        gruss,
        wahsaga

        1. Hallo,

          diese Variable $QUERY_STRING, kann ich nirgends finden, bzw. bei mir funktioniert die nicht.

          Grüße
          Palme

          1. Hallo,

            diese Variable $QUERY_STRING, kann ich nirgends finden, bzw. bei mir funktioniert die nicht.

            Grüße
            Palme

            1. diese Variable $QUERY_STRING, kann ich nirgends finden, bzw. bei mir funktioniert die nicht.

              $QUERY_STRING ist eine vordefinierte php-Variable und enthält den gesamten Text nach dem '?'.

              Teste doch mal:

              <html>
              <head>
              </head>
              <body>
              das ist der $QUERY_STRING:
              <?php echo $QUERY_STRING ; ?>
              </body>
              </html>

              wenn ich das in 'test.php' speichere und z.b. 'test.php?hallo' öffne, funktioniert das bei mir.

              Gruss Louis

              1. Hallo,

                wenn ich das in 'test.php' speichere und z.b. 'test.php?hallo' öffne, funktioniert das bei mir.

                Bei mir leider nicht.

                Ich bekomme folgende Fehlermeldung:

                Notice: Undefined variable: QUERY_STRING in c:\home\fdl\test.php on line 21

                Schade.

                Grüße

                Palme

                1. Hallo Palme,

                  wenn ich das in 'test.php' speichere und z.b. 'test.php?hallo' öffne, funktioniert das bei mir.
                  Bei mir leider nicht.
                  Ich bekomme folgende Fehlermeldung:
                  Notice: Undefined variable: QUERY_STRING in c:\home\fdl\test.php on line 21

                  [ ] du hast die Antwort von wahsaga ([pref:t=62173&m=351537]) gelesen

                  Grüße aus Nürnberg
                  Tobias

                  --
                  Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
                  1. Hallo,

                    [ ] du hast die Antwort von wahsaga ([pref:t=62173&m=351537]) gelesen

                    ups, sorry, hab ich wohl irgendwie übersehen.
                    mit $_SERVER['QUERY_STRING'] klappts jetzt.

                    Danke an Euch alle!

                    ...und wahsaga: bitte nicht persönlich nehmen...(Danke nochmals!)

                    Grüße

                    Palme

          2. hi,

            diese Variable $QUERY_STRING, kann ich nirgends finden, bzw. bei mir funktioniert die nicht.

            bei aktuelleren php-versionen steht die einstellung register_globals standardmässig auf off.

            das heisst, dass du den query string nicht mehr in $QUERY_STRING vorfindest, sondern in $_SERVER['QUERY_STRING'] oder $_ENV['QUERY_STRING'].

            genaueres zu register_globals und den folgen für dich lies mal unter http://www.php.net/manual/de/language.variables.predefined.php nach.

            gruss,
            wahsaga

  2. Ich glaube nicht, dass php das so bremst beim includen.
    Wenn du eine riesige Datei hast, ist das erstens unübersichtlich, und zweitens muss php dann ja auch die ganze (vermutlich sehr grosse) Datei öffnen, was in meinen Augen unsauber ist.

    Wegen Variante 0 oder drei, bin ich mir selber unsicher:

    0: ich nehme an du rufst "index.php?seitesoundso" auf, und fragst dann den Querystring ab, oder?

    3: du rufst "seitesoundso.php" auf, dort includest du z.B. die Navigation, Kopf etc.

    Was denken die anderen dazu? Was ist besser?

    Meine Überlegungen:
    bei 0 muss man nur eine einfache Datei in html schreiben, der den <body>-inhalt beinhaltet. -> einfach zu erweitern.
    Frage: findet z.B. Google solche Seiten?

    1. 0: ich nehme an du rufst "index.php?seitesoundso" auf, und fragst dann den Querystring ab, oder?

      Viele Abfragen sind übrigens in diesem Beispiel nicht mehr nötig. z.b. heisst der inhalt 'seitesoundso.inc' im Ordner 'content', dann schreibe im index.php

      if( file_exists("/content/" . $QUERY_STRING . ".inc") )
         {
            include "/content/" . $QUERY_STRING . ".inc";
         }