Matze: Externe Dateien einbinden

Hallo!
Ich möchte bei mehreren Seiten mehrere Teile includen.
Jetzt würde ich aber vorher gern wissen welche Möglichkeit
am günstigsten ist.
Ist es günstig in einer eingebundenen Datei nochmal extra
einen Link auf eine externe .css Datei einzubinden?
Kann ich doch auch direkt in die eine Datei schreiben oder?
Ich weiß nun das include() nicht das sicherste ist, aber
ich auch readfile() nicht unbedingt nehmen will, weil ich
gern, soweit Möglich, auf PHP verzichten will.
Bis jetzt habe ich die SHTML - Variante mit #include virtual.
Mir geht es darum so sparsam wie Möglich in Sachen Traffic und
Webspace wegzukommen.
Grüße, Matze

  1. Hallo Matze,

    wenn es nur um das Einbinden StyleSheets geht, so ist ein separat abgelegter File zu bevorzugen. Auszug aus einem Serverlog:

    IP             Uhrzeit  Datum    Status   Anfragezeile

    82.190.118.232 19:27:57 28.03.06 200     "GET /default/chat/ HTTP/1.1"
    82.190.118.232 19:27:57 28.03.06 200     "GET /default/chat/x.css HTTP/1.1"
    82.190.118.232 19:28:02 28.03.06 200     "GET /default/chat/ HTTP/1.1"
    82.190.118.232 19:28:02 28.03.06 304     "GET /default/chat/x.css HTTP/1.1"

    Es wurde ein Dokument zweimal angeforder. Dieses Dokument referenziert auf einen separaten StyleSheet "x.css". Beim ersten Aufruf werden beide Datein ausgeliefer (Statuscode 200), beim zweiten mal wurde nur das Dokument ausgeliefert und "x.css" wurde mit Statuscode "304 Not Modified" _nicht_ ausgeliefert. Der Client weis also, daß er eine im Cache befindliche "x.css" heranzuziehen hat und es wird Traffic gespart. Selbes Verhalten ist auch für separate JavaScripte anwendbar.

    Dies ist der Normalzustand zwischen einem Mozilla und einem Apachen. Der Apache kann aber noch konfiguriert werden, um Clients explizit anzuweisen, innerhalb einer bestimmten Zeitspanne immer gecachte Files zu verwenden. Lesenswert ist in diesem Zusammenhang ein Artikel von Christian Kruse: http://aktuell.de.selfhtml.org/artikel/server/apachetuning/index.html#a8

    Darauf aufbauend sollte man sich ein Konzept überlegen, welche Dokumente|Images|StyleSheet|... selten geändert werden, um geziel diese mit modifizierten Headern zu servieren.

    Gruß aus Berlin!
    eddi

    --
    Achte die Kleinigkeiten, aber liebe das Detail!
    1. Hallo Eddi!

      wenn es nur um das Einbinden StyleSheets geht, so ist ein separat abgelegter File zu bevorzugen.

      Im Klartext, wenn ich meinetwegen #include virtual="x.bsp"
      einbinde und darin mochmal ein link rel="stylesheet"
      spar ich Traffic und das ist deswegen besser? Das leuchtet ein.

      Wie verhällt es sich nun aber mit dem Rest, ich will ja noch
      mehr als css einbinden. Kommt da eher include, readfile, #include
      oder was auch immer in Frage? Was wäre da das günstigste?

      Grüße, Matze

      1. Re:

        Wie verhällt es sich nun aber mit dem Rest, ich will ja noch
        mehr als css einbinden. Kommt da eher include, readfile, #include
        oder was auch immer in Frage? Was wäre da das günstigste?

        Es wäre zur Beantwortung einfacher, wenn Du detailiert erklären würdest, was hierbei "der Rest" ist.

        Gruß aus Berlin!
        eddi

        --
        Achte die Kleinigkeiten, aber liebe das Detail!
      2. Hello out there!

        spar ich Traffic und das ist deswegen besser? Das leuchtet ein.
        ich will ja noch mehr als css einbinden. Kommt da eher include, readfile, #include oder was auch immer in Frage?

        Dir leuchtet auch ein, dass serverseitige Includes absolut gar nichts mit Traffiv zu tun haben?

        See ya up the road,
        Gunnar

        --
        “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
        1. Hallo Gunnar,

          Dir leuchtet auch ein, dass serverseitige Includes absolut gar nichts mit Traffiv zu tun haben?

          auf HTTP-Ebene ist das schon interessant, da einem dynamisch generietem Dokument Header wie ETag und Last-Modified (u. A.) fehlen (oder über komplexe Routinen erstellt werden müßten).

          Gruß aus Berlin!
          eddi

          --
          Achte die Kleinigkeiten, aber liebe das Detail!
      3. Hallo nochmal!

        Ihr habt in meiner ersten Frage aber schon den letzten
        Satz gelesen?

        Hier nochmal:
        Mir geht es darum so sparsam wie Möglich in Sachen Traffic und
        Webspace wegzukommen.

        Traffic hätte ich jetzt in Sachen CSS abgehackt, Danke.
        Was Webspace angeht sind Serverseitige include - Scripte
        meiner Erfahrung nach dann wieder sehr wohl sinnvoll.

        Grüße, Matze

        1. Hallo,

          wenn ich es richtig verstanden habe, ist SSI und PHP am Start. Ist PHP mit --with-zlib konfiguriert worden? Wenn ja, wie sieht die Runtime-Konfiguration dieser Erweiterung aus? Bietet der Server mod_defalte?

          Werde bitte konkret!

          Gruß aus Berlin!
          eddi

          --
          Achte die Kleinigkeiten, aber liebe das Detail!
          1. Hallo Eddi!
            Ja, ich habe PHP, SSI und auch CGI.

            --with-zlib ja, mod_defalte konnte ich nicht finden.
            Was willst du zur Runtimekonfiguration wissen?
            Ich habe eine phpinfo() Datei.

            Mir geht es doch nur darum welche Form der
            Einbindung am günstigsten/sichersten ist
            und ob man HTML Teile (ohne PHP-Script)
            ähnlich den CSS-Dateien einbinden kann, sodass
            sie auch nur einmal geladen werden. Zwecks
            dem Traffic.

            Die eingebundene Datei wäre dann eine xy.bsp
            und hätte nur den Inhalt der in der anfordernden
            Datei stehen soll.
            Die Einbindung von CSS läuft doch auch Clientseitig ab,
            hab ich richtig verstanden oder?

            Grüße, Matze

            1. Hello out there!

              Mir geht es doch nur darum welche Form der
              Einbindung am günstigsten/sichersten ist
              und ob man HTML Teile (ohne PHP-Script)
              ähnlich den CSS-Dateien einbinden kann, sodass
              sie auch nur einmal geladen werden. Zwecks
              dem Traffic.

              Du hattest meine Frage nicht verstanden?

              Externe CSS-Dateien werden nicht ins HTML-Dokument eingebunden, sondern von diesem aus referenziert. Es sind zwei getrennte Ressource, die dann clientseitig im Cache sind.

              Serverseitige Includes (ob nun SSI oder PHP oder was auch immer) schreiben den Datei-Inhalt des Includes in die Ressource, die übertragen wird. Bei einer anderen Ressource, die dieselbe Datei includiert, wird wieder der gesamte Quelltext (auch der includierte Teil) übertragen.

              See ya up the road,
              Gunnar

              --
              “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
              1. Hallo Gunnar!

                Du hattest meine Frage nicht verstanden?

                Doch, doch.

                Externe CSS-Dateien werden nicht ins HTML-Dokument eingebunden, sondern von diesem aus referenziert.

                Entschuldige dann bitte meine falsche ausdrucksweise.
                Dann so:
                Mir geht es doch nur darum welche Form der
                Einbindung am günstigsten/sichersten ist (Webspace sparen)
                und ob man HTML Teile (ohne PHP-Script) ähnlich den CSS-Dateien
                referenzieren kann, sodass sie auch nur einmal geladen werden.
                (Traffic sparen)

                Das mir das Serverseitige includen keinen Traffic spart
                ist mir jedenfalls klar. Webspace spar ich damit dennoch
                und darum ging es mir ja auch.

                Grüße, Matze

            2. Re:

              --with-zlib ja, mod_defalte konnte ich nicht finden.
              Was willst du zur Runtimekonfiguration wissen?

              Mich interessiert daran, ob zlib.output_compression=On und zlib.output_compression_level=9 konfiguriert ist. Dadurch werden alle Ausgaben PHPs, die konditional für eine Anfrage mit Accept-Encoding-HTTP-Header erstellt werden, komprimiert. Die Trafficveringerung zum Beispiel der Ausgabe von phpinfo() beträgt dabei ca. 4/5!

              Davon ist also auch abhänig, ob man Dir in Deinem Fall eher zu SSI oder zu PHP raten sollte. PHP ist im Gegensatz zu SSI ein Schwergewicht, was erheblich langsamer (reell ist das aber unerheblich, da im Milli- oder Microsekundenbereich) und verbraucht mehr Systemresourcen (CPU-Leistung/Arbeitsspeicher). Ist PHP aber ordentlich konfiguriert (wie oben), sind die daraus gewonnenen Vorteile überwiegend.

              PHP bietet aber default keine Möglichkeiten (bis auf Accept-Encoding) Konditionale HTTP-Anfragen zu verarbeiten. Die Dokumente müssen also immer komplett ausgeliefert werden, was ein Mehr an Traffic bedeutet. Daher ist es vielleicht auch sinnvoll auf die Möglichkeiten von mod_negotiation zurückzugreifen und erstellt nur mit PHP komprimierte Versionen der einzelnen Dokument. Dies ginge aber wieder einher mit einem Platzverlust einher.

              Mir geht es doch nur darum welche Form der
              Einbindung am günstigsten/sichersten ist
              und ob man HTML Teile (ohne PHP-Script)
              ähnlich den CSS-Dateien einbinden kann, sodass
              sie auch nur einmal geladen werden. Zwecks
              dem Traffic.

              Tja; so einfach ist das nicht, denn viele Wege führen nach Rom. Es kommt immer auf das Zusammenspiel verschiedener Faktoren (welcher Webserver unter Verwendung welcher Erweiterungen/Modulen kommt zum Einsatz / welche der Erweiterungen kann man selbst konfigurieren / muß man selbst für den Sparsamen Umgang der Resourcen sorgen / und, und, und) an. Welcher Weg dabei der beste ist, wird sich also nicht pauschalisieren lassen.

              Die eingebundene Datei wäre dann eine xy.bsp
              und hätte nur den Inhalt der in der anfordernden
              Datei stehen soll.

              Vom Standpunkt der Platzersparnis und Wartbarkeit ist dies schon eine gute Lösung. Und, auch wenn ich nicht alle Details kenne, ich würde Dir zu readfile() -also PHP- raten, für den Fall, daß Du Ausgabekompression (wie oben beschrieben) aktivierst.

              Die Einbindung von CSS läuft doch auch Clientseitig ab,
              hab ich richtig verstanden oder?

              Ja.

              Gruß aus Berlin!
              eddi

              --
              Achte die Kleinigkeiten, aber liebe das Detail!
              1. Hallo Eddi!

                Also bei mir ist das so eingestellt:
                zlib.output_compression Off Off
                zlib.output_compression_level -1

                Da ich an die Einstellungen nicht ran komme
                wird daraus also nichts.
                Insofern bleib ich solange ich keine
                PHP-Scripte brauch also bei SHTML.
                Bei bedarf nehm ich dann readfile()

                Danke für eure Antworten!

                Grüße, Matze