Malcolm Beck´s: CSS: Caching wenn das CSS aus vielen stücken besteht

0 57

CSS: Caching wenn das CSS aus vielen stücken besteht

Malcolm Beck´s
  • css
  1. 0
    suit
    1. 0
      Malcolm Beck´s
      1. 0
        suit
        1. 0
          Malcolm Beck´s
  2. 0
    Cheatah
    1. 0
      suit
    2. 0
      Peter Pan
      1. 0
        Jens Holzkämper
        1. 0
          suit
          1. 0
            Jens Holzkämper
            1. 0
              Gunnar Bittersmann
              1. 0
                suit
              2. 0
                Jens Holzkämper
                1. 0
                  Gunnar Bittersmann
                  1. 0
                    Jens Holzkämper
                    1. 0
                      Gunnar Bittersmann
                      1. 0
                        suit
                        1. 0
                          Gunnar Bittersmann
            2. 0
              suit
              1. 0
                Jens Holzkämper
                1. 0
                  suit
                  1. 0
                    Jens Holzkämper
                    1. 0
                      suit
                      1. 0
                        Jens Holzkämper
          2. 0
            at
            1. 0
              suit
              1. 0
                at
    3. 0
      Malcolm Beck´s
      1. 0
        Peter Pan
        1. 0
          Malcolm Beck´s
          1. 0
            Auge
            1. 0
              Malcolm Beck´s
              1. 0
                Auge
                1. 0
                  Malcolm Beck´s
                  1. 0
                    Auge
                    1. 0
                      Malcolm Beck´s
                      1. 0
                        Christoph
                        1. 0
                          Malcolm Beck´s
                      2. 0
                        Auge
                        1. 0
                          Malcolm Beck´s
                          1. 0
                            Auge
                            1. 0
                              Malcolm Beck´s
    4. 0
      Peter Pan
  3. 0
    Christoph
    1. 0
      Malcolm Beck´s
      1. 0
        Christoph
        1. 0

          CSS: Danke

          Malcolm Beck´s
          1. 0
            Christoph
            1. 0
              Malcolm Beck´s
              1. 0
                Malcolm Beck´s
                1. 0
                  suit
                  1. 0
                    Malcolm Beck´s
        2. 0
          suit
          1. 0
            Christoph
          2. 0
            Sven Rautenberg
            1. 0
              suit

hi,

ich hab eine PHP-Datei die ich mittels header als CSS ausgebe.

Was meint ihr, gibt es Probleme mit dem Caching, wenn mein CSS sich intern aus vielen Stücken zusammenbaut?

Das CSS ist unter einer URL erreichbar, der Inhalt baut sich mittels include oder require aus mehreren teilen zusammen, vielleicht auch aus der Datenbank, könnte dass das Caching beeinträchtigen?

Das verlinkte Beispiel enthält:

<?php  
  header("Content-type: text/css; charset=UTF-8");  
  
  require_once 'input';   // in „input“ stehen die Styles.  
?>

mfg

  1. Was meint ihr, gibt es Probleme mit dem Caching, wenn mein CSS sich intern aus vielen Stücken zusammenbaut?

    was spricht dagegen das css direkt als statisches file durch php ausgeben zu lassen? und nur bei einer änderung neu zu gegnerieren?

    1. hi,

      was spricht dagegen das css direkt als statisches file durch php ausgeben zu lassen? und nur bei einer änderung neu zu gegnerieren?

      Die unübersichtliche CSS mit vielleicht 400 - 500 Zeilen.

      mfg

      1. hi,

        was spricht dagegen das css direkt als statisches file durch php ausgeben zu lassen? und nur bei einer änderung neu zu gegnerieren?

        Die unübersichtliche CSS mit vielleicht 400 - 500 Zeilen.

        nein, ich meine damit, anstatt das was du jetzt als css ausgibtst direkt an den ausgabepuffer zu schicken in ein file zu schreiben - diese generieraufgabe machst du dann per cronjob 1x am tag oder auf knopfdruck bei jeder änderung

        somit hast du ein physisches file welches defintiv erreichbar ist auch wenn die datenbank in die knie geht

        1. hi,

          nein, ich meine damit, anstatt das was du jetzt als css ausgibtst direkt an den ausgabepuffer zu schicken in ein file zu schreiben - diese generieraufgabe machst du dann per cronjob 1x am tag oder auf knopfdruck bei jeder änderung

          somit hast du ein physisches file welches defintiv erreichbar ist auch wenn die datenbank in die knie geht

          Cronjob fällt schon mal Flach, dafür müsste ich draufzahlen.
          Das mit dem ausgabepuffer ist wohl diese Geschichte mit ob_start(), da muss ich mich erstmal reinlesen, klingt aber gut, ich werde es mal versuchen.

          Danke für den Tipp.

          mfg

  2. Hi,

    Was meint ihr, gibt es Probleme mit dem Caching, wenn mein CSS sich intern aus vielen Stücken zusammenbaut?

    meinst Du den Filesystem-Cache Deines Servers? Der Client wird niemals auch nur das geringste davon erfahren, wie (bzw. ob) die Ressource zusammengebaut wurde. Sie kann genauso gut von unendlich vielen Affen per Schreibmaschine getippt werden.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Der Client wird niemals auch nur das geringste davon erfahren, wie (bzw. ob) die Ressource zusammengebaut wurde.

      ja, aber wenn die datenbank nicht verfügbar ist, hilft das wenig

      Sie kann genauso gut von unendlich vielen Affen per Schreibmaschine getippt werden.

      dafür gibts sicher bereits frameworks ;)

    2. Hi!

      Sie kann genauso gut von unendlich vielen Affen per Schreibmaschine getippt werden.

      Wer scannt dann bitte den analogen Affen-CSS-Code ein?

      off:PP

      --
      "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
      1. Tach,

        Wer scannt dann bitte den analogen Affen-CSS-Code ein?

        das ist einfach, von den unendlichen vielen Affen an den Schreibmaschinen nimmt man einfach die Hälfte und stellt sie an die Scanner; das ist doch das schöne, wenn man erstmal unendlich viele Affen hat, können die auch gleich unendlich viele Aufgaben erledigen statt nur einer (sofern die zweite Unendlichkeit höchstens gleichmächtig zur ersten ist natürlich).

        mfg
        Woodfighter

        1. das ist einfach, von den unendlichen vielen Affen an den Schreibmaschinen nimmt man einfach die Hälfte und stellt sie an die Scanner; das ist doch das schöne, wenn man erstmal unendlich viele Affen hat, können die auch gleich unendlich viele Aufgaben erledigen statt nur einer (sofern die zweite Unendlichkeit höchstens gleichmächtig zur ersten ist natürlich).

          du solltest dich mal mit hilbert auseinandersetzen ;)

          die hälfte von unendlich vielen affen zu nehmen ist doch ineffizent, wenn du gleich unendlich viele affen nehmen kannst - die werden deshalb ja nicht weniger

          und auch wenn du ihnen schon unendlich viele aufgaben zugeteilt hast, wirds immer noch aufgaben geben, die sie noch nicht erledigen und unendlich viele arbeitgeräte geben, an denen noch nicht gearbeitet wird - du hast also unendlich lange zu tun, ihnen aufgaben zuzuweisen :p

          1. Tach,

            du solltest dich mal mit hilbert auseinandersetzen ;)

            die hälfte von unendlich vielen affen zu nehmen ist doch ineffizent, wenn du gleich unendlich viele affen nehmen kannst

            Ich gebe den Hilbert-Hinweis mal wieder zurück ([latex]\frac{\aleph_0}{2} = \aleph_0[/latex]).

            und auch wenn du ihnen schon unendlich viele aufgaben zugeteilt hast, wirds immer noch aufgaben geben, die sie noch nicht erledigen und unendlich viele arbeitgeräte geben, an denen noch nicht gearbeitet wird - du hast also unendlich lange zu tun, ihnen aufgaben zuzuweisen :p

            Da ich die Aufgabenerteilung an unendlich viele Affen delegieren kann, schaffe ich das bequem in endlicher Zeit.

            mfg
            Woodfighter

            1. @@Jens Holzkämper:

              Da ich die Aufgabenerteilung an unendlich viele Affen delegieren kann, schaffe ich das bequem in endlicher Zeit.

              Ich glaube, hier unterschätzt du die Menge der Aufgaben. Ein paar mehr als ℵₐ dürften es schon sein.

              Live long and prosper,
              Gunnar

              --
              Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.
              1. Ich glaube, hier unterschätzt du die Menge der Aufgaben. Ein paar mehr als ℵₐ dürften es schon sein.

                es reicht doch, wenn er einem affen sagt, er soll es unendlich vielen affen sagen, dass sie ab sofort, weitere aufgaben zuteilen sollen - das dauert zwar unendlich lange, macht aber nix ;)

              2. Tach,

                Ich glaube, hier unterschätzt du die Menge der Aufgaben. Ein paar mehr als ℵₐ dürften es schon sein.

                du unterschätzt die Menge meiner Affen, das schaffe ich mit [latex]\aleph_{a+1}[/latex] Affen aber bequem; ich würde schätzen dass sogar [latex]\aleph_{a}[/latex] Affen reichen und genau das schrieb ich auch in meiner vorletzten Antwort.

                mfg
                Woodfighter

                1. @@Jens Holzkämper:

                  du unterschätzt die Menge meiner Affen, das schaffe ich mit [latex]\aleph_{a+1}[/latex] Affen aber bequem; ich würde schätzen dass sogar [latex]\aleph_{a}[/latex] Affen reichen und genau das schrieb ich auch in meiner vorletzten Antwort.

                  ?? Ich hatte den Eindruck, du hättest deine Horden Affen im Griff und würdest sie überschauen (i.e. abzählen) können.

                  Aus welchem Kontinuum nimmst du nun die mindestens so vielen zusätzlichen Affen? Und das in endlicher Zeit? Da komm ich nicht mehr mit, das ist mir zu schnell. Das ist mir zu affig.

                  Live long and prosper,
                  Gunnar

                  --
                  Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.
                  1. Tach,

                    ?? Ich hatte den Eindruck, du hättest deine Horden Affen im Griff und würdest sie überschauen (i.e. abzählen) können.

                    sagt derjenige, der mir überabzählbar viele Aufgaben vorwerfen will ;-)

                    Aus welchem Kontinuum nimmst du nun die mindestens so vielen zusätzlichen Affen?

                    Vielleicht können mir die Q helfen.

                    mfg
                    Woodfighter

                    1. @@Jens Holzkämper:

                      sagt derjenige, der mir überabzählbar viele Aufgaben vorwerfen will ;-)

                      Ich?? Das war doch suit. So hatte ich es jedenfalls verstanden, und wenn’s auch so gemeint war, hat er recht: Die Menge aller Aufgaben ist nicht abzählbar.

                      (Analog zur nicht abzählbaren Menge aller Sprachen. Die Menge der Typ-0-Sprachen der Chomsky-Hierarchie hingegen ist abzählbar, IIRC.)

                      Vielleicht können mir die Q helfen.

                      Die Q haben ihren Spaß daran, unlösbare Aufgaben zu stellen ...

                      Live long and prosper,
                      Gunnar

                      --
                      Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.
                      1. sagt derjenige, der mir überabzählbar viele Aufgaben vorwerfen will ;-)

                        Ich?? Das war doch suit. So hatte ich es jedenfalls verstanden, und wenn’s auch so gemeint war, hat er recht: Die Menge aller Aufgaben ist nicht abzählbar.

                        sie ist nicht höchtens abzählbar, aber sehrwohl abzählbar unendlich

                        1. @@suit:

                          Die Menge aller Aufgaben ist nicht abzählbar.

                          sie ist nicht höchtens abzählbar, aber sehrwohl abzählbar unendlich

                          Ich denke, die Menge aller Aufgaben ist (analog zur Menge aller Sprachen) überabzählbar. Daraus ergeben sich überabzählbar viele unlösbare Aufgaben.

                          Live long and prosper,
                          Gunnar

                          --
                          Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.
            2. die hälfte von unendlich vielen affen zu nehmen ist doch ineffizent, wenn du gleich unendlich viele affen nehmen kannst

              Ich gebe den Hilbert-Hinweis mal wieder zurück ([latex]\frac{\aleph_0}{2} = \aleph_0[/latex]).

              das ist schon richtig, dass die hälfe von unendlich genauso mächtig ist, wie gleich unendlich viele zu nehmen - aber warum willst du dich mit einem bruch zufrieden geben, wenn du gleich ([latex]\aleph_a[/latex]) affen delegieren kannst etwas zu tun - das spart dir doch zeit

              siehe folgende befehle:
              "die hälfte der affen delegiert ab sofort weitere aufgaben"
              "alle affen delegieren ab sofort weitere aufgaben"

              zweiterer spart dir beim aussprechen zeit ;)

              1. Tach,

                das ist schon richtig, dass die hälfe von unendlich genauso mächtig ist, wie gleich unendlich viele zu nehmen - aber warum willst du dich mit einem bruch zufrieden geben

                du hast Unendlichkeit noch nicht verstanden, die Teilmenge ist exakt gleichgroß wie die Gesamtmenge, ich gebe mich also nicht mit einem Bruchteil zufrieden.

                siehe folgende befehle:
                "die hälfte der affen delegiert ab sofort weitere aufgaben"
                "alle affen delegieren ab sofort weitere aufgaben"

                zweiterer spart dir beim aussprechen zeit ;)

                Wenn ich allerdings alle Affen abkommandiere, bleiben keine mehr für die Schreibmaschinen übrig.

                mfg
                Woodfighter

                1. du hast Unendlichkeit noch nicht verstanden, die Teilmenge ist exakt gleichgroß wie die Gesamtmenge, ich gebe mich also nicht mit einem Bruchteil zufrieden.

                  das nicht, aber du machst die formulierung unötig umständlich

                  Wenn ich allerdings alle Affen abkommandiere, bleiben keine mehr für die Schreibmaschinen übrig.

                  die können das ja als nebenjob machen, halbtags

                  1. Tach,

                    du hast Unendlichkeit noch nicht verstanden, die Teilmenge ist exakt gleichgroß wie die Gesamtmenge, ich gebe mich also nicht mit einem Bruchteil zufrieden.

                    das nicht, aber du machst die formulierung unötig umständlich

                    das mag sein, war allerdings Absicht.

                    Wenn ich allerdings alle Affen abkommandiere, bleiben keine mehr für die Schreibmaschinen übrig.

                    die können das ja als nebenjob machen, halbtags

                    Auch 'ne Idee, aber dann dauert das ja gleich doppelt so lange ;-)

                    mfg
                    Woodfighter

                    1. das mag sein, war allerdings Absicht.

                      um uns in eine unendliche verwirrung zu stürzen?

                      Auch 'ne Idee, aber dann dauert das ja gleich doppelt so lange ;-)

                      das faule pack soll halt pro halben arbeitstag unendlich viel arbeiten - da geht schon was weiter :p

                      1. Tach,

                        das mag sein, war allerdings Absicht.
                        um uns in eine unendliche verwirrung zu stürzen?

                        mindestens

                        mfg
                        Woodfighter

          2. Hallo.

            die hälfte von unendlich vielen affen zu nehmen ist doch ineffizent, wenn du gleich unendlich viele affen nehmen kannst - die werden deshalb ja nicht weniger

            Besonders nicht hier.
            MfG, at

            1. Besonders nicht hier.
              MfG, at

              scheint so - ich stell mir grade vor wie du zuhause mit einer banane vor dem rechner hockst :D

              btw: bananen sind lecker

              1. Hallo.

                ich stell mir grade vor wie du zuhause mit einer banane vor dem rechner hockst :D

                Eben habe ich vor einer Schüssel Waldbeeren gehockt. Jetzt vor dem Rechner sind es nur Erdnüsse. Aber die sind ja ebenfalls artgerecht.

                btw: bananen sind lecker

                Unendlich lecker.
                MfG, at

    3. hi,

      meinst Du den Filesystem-Cache Deines Servers? Der Client wird niemals auch nur das geringste davon erfahren, wie (bzw. ob) die Ressource zusammengebaut wurde.

      Dann sollte ich vermutlich im header auch das Caching Explizit verlangen, dann spricht ja nichts gegen diese Vorgehensweise, oder?

      Sie kann genauso gut von unendlich vielen Affen per Schreibmaschine getippt werden.

      Das bietet mein Hoster leider nicht an :)

      mfg

      1. Hi!

        meinst Du den Filesystem-Cache Deines Servers? Der Client wird niemals auch nur das geringste davon erfahren, wie (bzw. ob) die Ressource zusammengebaut wurde.

        Dann sollte ich vermutlich im header auch das Caching Explizit verlangen, dann spricht ja nichts gegen diese Vorgehensweise, oder?

        Gegenfrage: warum willst Du den CSS-Code (jedes Mal) dynamisch generieren?

        off:PP

        --
        "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
        1. hi,

          Dann sollte ich vermutlich im header auch das Caching Explizit verlangen, dann spricht ja nichts gegen diese Vorgehensweise, oder?

          Gegenfrage: warum willst Du den CSS-Code (jedes Mal) dynamisch generieren?

          Die Frage bezieht sich nur auf die Clients, mir ist es ja egal, ob die CSS sich aus 20 teilen dynamisch zusammenbaut, nur was macht der Client, verlangsamt es das Parsen der CSS.

          Mir geht es, wie ich suit schon schrieb, darum, dass mein CSS unübersichtlich bzw. einfach zu groß ist, so könnte ich die CSS einfach Strukturieren.

          mfg

          1. Hallo

            Gegenfrage: warum willst Du den CSS-Code (jedes Mal) dynamisch generieren?

            Die Frage bezieht sich nur auf die Clients, mir ist es ja egal, ob die CSS sich aus 20 teilen dynamisch zusammenbaut, nur was macht der Client, verlangsamt es das Parsen der CSS.

            Mir geht es, wie ich suit schon schrieb, darum, dass mein CSS unübersichtlich bzw. einfach zu groß ist, so könnte ich die CSS einfach Strukturieren.

            Ähem, ob du dein unübersichtliches CSS mit einer statischen Datei oder serverseitig aus diversen Teilen zusammengesetzt und per PHP generiert an den Client übermittelst, ist vollkommen egal. Der bekommt eine CSS-Datei, mehr nicht.

            Tschö, Auge

            --
            Die deutschen Interessen werden am Liechtenstein verteidigt.
            Veranstaltungsdatenbank Vdb 0.2
            1. hi,

              Ähem, ob du dein unübersichtliches CSS mit einer statischen Datei oder serverseitig aus diversen Teilen zusammengesetzt und per PHP generiert an den Client übermittelst, ist vollkommen egal. Der bekommt eine CSS-Datei, mehr nicht.

              Eben das möchte ich ja nicht, ich bin da zwar nicht grad bewandert, aber es gibt ja diese Proxy-Server, die Beispielsweise einiges aus Internet-Seiten Cachen, das möchte ich nicht unterbinden.

              Ich kam leider noch nicht dazu, mich mit dem Status-Code 304 Beispiel zu beschäftigen, steht aber auf meiner ToDo Liste ziemlich weit oben.

              mfg

              1. Hallo

                Ähem, ob du dein unübersichtliches CSS mit einer statischen Datei oder serverseitig aus diversen Teilen zusammengesetzt und per PHP generiert an den Client übermittelst, ist vollkommen egal. Der bekommt eine CSS-Datei, mehr nicht.

                Eben das möchte ich ja nicht, ...

                Ich verstehe dein Ansinnen wirklich nicht.

                Fall 1:
                HTML-Dokument, in dem eine (eventuell auch unübersichtliche) CSS-Datei referenziert ist.

                Fall 2:
                HTML-Dokument, in dem ein PHP-Skript referenziert ist, dass den Inhalt einer CSS-Datei ausspuckt.

                Fall 2.1:
                Du baust deine CSS-Anweisungen über eine (z.B. PHP-) Webanwendung zusammen und erzeugst daraus eine statische CSS-Datei, womit wir wieder bei Fall 1 wären. :-)

                In allen Fällen kommt beim Browser eine CSS-Datei an, Punkt, um, aus. Ob die CSS-Datei irgendwo gecacht wird, ist doch ein ganz andere Baustelle. Zumal es im Normalfall ja gewünscht wird, dass die CSS-Anweisungen nur einmal an den Clienten übermittelt werden müssen, sie also gecacht werden sollen.

                Tschö, Auge

                --
                Die deutschen Interessen werden am Liechtenstein verteidigt.
                Veranstaltungsdatenbank Vdb 0.2
                1. hi,

                  Eben das möchte ich ja nicht, ...
                  Ich verstehe dein Ansinnen wirklich nicht.

                  Doch du tust, nur falsch :)

                  Du baust deine CSS-Anweisungen über eine (z.B. PHP-) Webanwendung zusammen und erzeugst daraus eine statische CSS-Datei, womit wir wieder bei Fall 1 wären. :-)

                  Ja, dass krieg ich aber nicht gebacken, deshalb möchte ich es mit Caching lösen :)
                  Sobald ich dieses beschi...eidene Formular fertig habe, mache ich mich wieder an die CSS Datei.

                  Ob die CSS-Datei irgendwo gecacht wird, ist doch ein ganz andere Baustelle.

                  Aber genau um diese Baustelle geht es mir, die CSS-Datei soll gecacht werden, egal wie.

                  Zumal es im Normalfall ja gewünscht wird, dass die CSS-Anweisungen nur einmal an den Clienten übermittelt werden müssen, sie also gecacht werden sollen.

                  Bei der dynamischen Ausgabe durch PHP kann der gute Apache aber nicht wissen, wann sich die Ausgabe des Skript geändert hat, d.h., es liegt an dir, diese Logik durch Auswertung des If-Modified-Since Headers selbst zu implementieren.

                  mfg

                  1. Hallo

                    Du baust deine CSS-Anweisungen über eine (z.B. PHP-) Webanwendung zusammen und erzeugst daraus eine statische CSS-Datei, womit wir wieder bei Fall 1 wären. :-)

                    Ja, dass krieg ich aber nicht gebacken, deshalb möchte ich es mit Caching lösen :)

                    Wo ist das Problem? Du hast offensichtlich "Bruchstücke" deiner CSS-Anweisungen in irgendwelchen Quellen (Dateien, DB-Talelle(n)), die du per PHP zu einer großen Zeichenkette zusammenfügst und als CSS an den Browser auslieferst. Was hindert dich daran, diese zusammengestückelte Zeichenkette nicht direkt auszuliefern, sondern als statische CSS-Datei auf dem Server zu speichern und sie in den HTML-Dokumenten unter dem für die CSS-Datei gewählten Namen zu referenzieren?

                    Ob die CSS-Datei irgendwo gecacht wird, ist doch ein ganz andere Baustelle.

                    Aber genau um diese Baustelle geht es mir, die CSS-Datei soll gecacht werden, egal wie.

                    Bei der dynamischen Ausgabe durch PHP kann der gute Apache aber nicht wissen, wann sich die Ausgabe des Skript geändert hat, d.h., es liegt an dir, diese Logik durch Auswertung des If-Modified-Since Headers selbst zu implementieren.

                    ... (oder, wie schon vorgeschlagen, einfach statische CSS-Dateien zu generieren).

                    (ebenda) ;-)

                    Mal als grundsätzliche Nachfrage, um meinen, aus den Informationen im hiesigen Thread gewonnenen, Eindruck zu entkräften oder zu bestätigen:

                    Du hast einen unübersichtlichen Haufen von CSS-Anweisungen in verschiedenen Quellen. Um dich darin zurechtzufinden, willst du diesen Zustand ansich nicht ändern, sondern mit Hilfe eines PHP-Skriptes, dass die Quellen zusammenfügt, Herr der Lage werden?

                    *Falls* das so ist, wäre es nicht einfacher (wenn auch im ersten Moment zeitaufwendiger), die CSS-Anweisungen sinnvoll zu sortieren, gruppieren, wasauchimmer, und hinterher eine (oder auch mehrere) statische, gerade in Hinsicht auf dein Problem einfacher zu handhabende, CSS-Datei(en) zu haben?

                    Tschö, Auge

                    --
                    Die deutschen Interessen werden am Liechtenstein verteidigt.
                    Veranstaltungsdatenbank Vdb 0.2
                    1. hi,

                      Was hindert dich daran, diese zusammengestückelte Zeichenkette nicht direkt auszuliefern, sondern als statische CSS-Datei auf dem Server zu speichern und sie in den HTML-Dokumenten unter dem für die CSS-Datei gewählten Namen zu referenzieren?

                      Damit ich nicht dumm sterbe ; Was bedeutet eigentlich eine statische, in diesem Fall eine statische CSS-Datei und wie erzeuge ich sowas?

                      Mal als grundsätzliche Nachfrage, um meinen, aus den Informationen im hiesigen Thread gewonnenen, Eindruck zu entkräften oder zu bestätigen:

                      Vorneweg, ich bin Amateur.

                      Du hast einen unübersichtlichen Haufen von CSS-Anweisungen in verschiedenen Quellen. Um dich darin zurechtzufinden, willst du diesen Zustand ansich nicht ändern, sondern mit Hilfe eines PHP-Skriptes, dass die Quellen zusammenfügt, Herr der Lage werden?

                      Zurzeit ist noch alles in einer CSS-Datei, ja, ich würde gerne alles der Übersichtlichkeit zuliebe zerstückeln.

                      *Falls* das so ist, wäre es nicht einfacher (wenn auch im ersten Moment zeitaufwendiger), die CSS-Anweisungen sinnvoll zu sortieren, gruppieren, wasauchimmer, und hinterher eine (oder auch mehrere) statische, gerade in Hinsicht auf dein Problem einfacher zu handhabende, CSS-Datei(en) zu haben?

                      Wie gesagt, da muss erstmal geklärt werden, was es mit dem Begriff statische Seite auf sich hat und wie ich sowas zustande kriege.

                      mfg

                      1. Moin.

                        Damit ich nicht dumm sterbe ; Was bedeutet eigentlich eine statische, in diesem Fall eine statische CSS-Datei und wie erzeuge ich sowas?

                        Die Idee ist simpel: Momentan hast du ein PHP-Skript, das dir eine CSS-Datei generiert und an den Browser sendet. Anstelle jetzt dieses Skript auf den öffentlichen Server zu stellen, rufst du das Skript einmalig (bzw. nach jeder Veränderung am Code, welche die Skriptausgabe ändert) auf deinem loakeln Testserver auf und überträgst die fertig zusammengesetzte, statische (d.h. nicht bei jedem Aufruf neu generierte) Datei - die ja nur noch reines CSS enthält - auf den öffentlichen Server. Der Vorteil ist, dass dann die Caching-Mechanismen des Apache greifen, der Nachteil, dass du nach jeder Änderung die Datei neu auf den Server übertragen musst.

                        Christoph

                        1. hi,

                          Anstelle jetzt dieses Skript auf den öffentlichen Server zu stellen, rufst du das Skript einmalig (bzw. nach jeder Veränderung am Code, welche die Skriptausgabe ändert) auf deinem loakeln Testserver auf ... Der Vorteil ist, dass dann die Caching-Mechanismen des Apache greifen, der Nachteil, dass du nach jeder Änderung die Datei neu auf den Server übertragen musst.

                          Ja, so werde ich es machen, so oft ändere ich ja nicht mal meine CSS, dass ich mir soviele Gedanken mache.

                          Danke für die Hilfe.

                          mfg

                      2. Hallo

                        Was hindert dich daran, diese zusammengestückelte Zeichenkette nicht direkt auszuliefern, sondern als statische CSS-Datei auf dem Server zu speichern und sie in den HTML-Dokumenten unter dem für die CSS-Datei gewählten Namen zu referenzieren?

                        Damit ich nicht dumm sterbe ; Was bedeutet eigentlich eine statische, in diesem Fall eine statische CSS-Datei und wie erzeuge ich sowas?

                        Wie, was? Eine statische Datei ist in diesem Zusammenhang eine Datei, deren Inhalt nicht bei jedem Abruf neu erzeugt wird, sondern die einmal erzeugt/geschrieben und nur gelesen wird. Bei einer CSS-Datei ist das typische Beispiel, mit einem Texteditor den gewünschten Inhalt zu notieren, die Datei unter einem gewünschten Namen abzuspeichern und die Datei auf den Webserver zu übertragen.

                        Du hast einen unübersichtlichen Haufen von CSS-Anweisungen in verschiedenen Quellen. Um dich darin zurechtzufinden, willst du diesen Zustand ansich nicht ändern, sondern mit Hilfe eines PHP-Skriptes, dass die Quellen zusammenfügt, Herr der Lage werden?

                        Zurzeit ist noch alles in einer CSS-Datei, ja, ich würde gerne alles der Übersichtlichkeit zuliebe zerstückeln.

                        Wenn du die CSS-Anweisungen in mehrere CSS-Dateien verteiltest und diese Dateien alle im HTML-Dokument referenziertest, würde ich das verstehen. Den Kram einfach nur zu zerteilen, um ihn auf dem Server skriptseitig wieder zusammenzufügen und wieder als _eine_ Ressource auszuliefern, ist irgendwie ... unsinnig.

                        Räume den CSS-Code auf und generiere die CSS-Datei(en), die du in die HTML-Dokumente einzubinden wünschst. Dann liegen sie (nach der Übertragung) auf dem Server als statische Dateien und der Webserver erledigt, wie schon erwähnt, dein Cachingproblem.

                        Tschö, Auge

                        --
                        Die deutschen Interessen werden am Liechtenstein verteidigt.
                        Veranstaltungsdatenbank Vdb 0.2
                        1. hi,

                          Bei einer CSS-Datei ist das typische Beispiel, mit einem Texteditor den gewünschten Inhalt zu notieren, die Datei unter einem gewünschten Namen abzuspeichern und die Datei auf den Webserver zu übertragen.

                          Danke für die Erklärung, sowas hatte ich mir schon gedacht, war mir aber nicht sicher.

                          Wenn du die CSS-Anweisungen in mehrere CSS-Dateien verteiltest und diese Dateien alle im HTML-Dokument referenziertest, würde ich das verstehen. Den Kram einfach nur zu zerteilen, um ihn auf dem Server skriptseitig wieder zusammenzufügen und wieder als _eine_ Ressource auszuliefern, ist irgendwie ... unsinnig.

                          Ich hatte oft gelesen, dass es besser sei, nur eine CSS an den Browser zu schicken statt zwei oder drei, inwiefern das richtig ist weiss ich nicht mal.

                          Räume den CSS-Code auf und generiere die CSS-Datei(en), die du in die HTML-Dokumente einzubinden wünschst. Dann liegen sie (nach der Übertragung) auf dem Server als statische Dateien und der Webserver erledigt, wie schon erwähnt, dein Cachingproblem.

                          Das ist wohl das klügste was ich tun kann, ich war zu sehr darauf fixiert, dass ganze Online zusammenzusetzen, Lokal ist das aber besser erledigt.

                          Danke für die Hilfe.

                          mfg

                          1. Hallo

                            Ich hatte oft gelesen, dass es besser sei, nur eine CSS an den Browser zu schicken statt zwei oder drei, inwiefern das richtig ist weiss ich nicht mal.

                            Naja, *eine* Datei ist eben nur *eine* Datei. Es gibt nur *eine* Ressource, die beim erstmaligen Aufruf übertragen werden muss, es gibt nur *eine* Datei, die im HTML-Dokument falsch referenziert werden könnte und auch nur *eine* Datei, in der man nach Fehlern suchen muss, wenn sie denn auftreten.

                            Wenn du das nicht gleich in -zig CSS-Dateien aufspaltest, musst du das aber auch nicht so eng sehen. Ich habe bei einem Projekt auch schon mal eine extra CSS-Datei für die Navigation hinterlegt, um im Code die Übersicht zu behalten. Meist ist das aber unnötig und im Falle der Fehlersuche eher unpraktisch, außer man weiß *ganz genau*, welche Anweisungen in welcher Datei notiert sind.

                            Danke für die Hilfe.

                            büdde, büdde :-)

                            Tschö, Auge

                            --
                            Die deutschen Interessen werden am Liechtenstein verteidigt.
                            Veranstaltungsdatenbank Vdb 0.2
                            1. hi,

                              nur *eine* Datei, in der man nach Fehlern suchen muss, wenn sie denn auftreten.

                              Genau das gleiche ging mir auch heute durch den Kopf, Fehlersuche ist bei gesplitteten CSS-Dateien alles andere als Praktisch, ich weiss garnicht, wie ich immer auf solche klöppse komm.
                              Aber war gut, drüber geredet zu haben :)
                              Ein Paar gute Tipps haben sich ja im Thread ergeben.

                              im Falle der Fehlersuche eher unpraktisch, außer man weiß *ganz genau*, welche Anweisungen in welcher Datei notiert sind.

                              Eben, statt sich arbeit zu ersparen muss man sich ja noch mehr merken, neee, das ist ein schlechter Deal :)

                              Ich widme mich erstmal wieder meiner Userparanoia  :)

                              mfg

    4. Hi!

      Sie kann genauso gut von unendlich vielen Affen per Schreibmaschine getippt werden.

      Es hat mir doch jetzt keine Ruhe gelassen, da es mich an etwas erinnerte - google war mein Freund: IMT.

      Dieser (subtile) Hinweis von einem Informatiker war doch kein Zufall, oder?

      off:PP

      --
      "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
  3. Moin.

    ich hab eine PHP-Datei die ich mittels header als CSS ausgebe.
    Was meint ihr, gibt es Probleme mit dem Caching, wenn mein CSS sich intern aus vielen Stücken zusammenbaut?

    Das Problem ergibt sich vermutlich nicht aus den 'vielen Stücken', sondern der Ausgabe per PHP. Im Zweifelsfall kannst du ja einfach mal Testen, ob $Browser_deiner_Wahl_mit_HTTP_Header_Anzeige das gewünschte Verhalten zeigt.

    Sollte das Stylesheet nicht zwischengespeichert werden, könntest du dir den 'If-Modified-Since' Header (verfügbar in apache_request_headers()) anschauen und gegebenenfalls statt das CSS auzuliefern nur ein 304 Not Modified senden.

    Christoph

    1. hi,

      Das Problem ergibt sich vermutlich nicht aus den 'vielen Stücken', sondern der Ausgabe per PHP. Im Zweifelsfall kannst du ja einfach mal Testen, ob $Browser_deiner_Wahl_mit_HTTP_Header_Anzeige das gewünschte Verhalten zeigt.

      Das, was im Browser ankommt ist das, was ich möchte.
      http://start-navi.de/beispiele/test-style.css.php
      Auch der header ist in Ordnung
      Content-Type: text/css; charset=UTF-8

      Sollte das Stylesheet nicht zwischengespeichert werden, könntest du dir den 'If-Modified-Since' Header (verfügbar in apache_request_headers()) anschauen und gegebenenfalls statt das CSS auzuliefern nur ein 304 Not Modified senden.

      Das wäre unerwünscht, wenn es nicht zwischengespeichert wird, braucht es mir nicht gleich das Design zu zerhauen.

      mfg

      1. Moin.

        Das, was im Browser ankommt ist das, was ich möchte.
        http://start-navi.de/beispiele/test-style.css.php
        Auch der header ist in Ordnung
        Content-Type: text/css; charset=UTF-8

        Sicher? Du hast, glaube ich, nicht verstanden, was ich dir sagen wollte. Rufe ich deine Test-Adresse auf und drücke F5, wird jedesmal ein 200er gesendet und die Ressource neu übertragen. Rufe ich eine statische CSS-Datei wiederholt auf, quittiert mir der Server das mit einem 304er und die Datei muss nicht erneut übertragen werden.

        Bei der dynamischen Ausgabe durch PHP kann der gute Apache aber nicht wissen, wann sich die Ausgabe des Skript geändert hat, d.h., es liegt an dir, diese Logik durch Auswertung des If-Modified-Since Headers selbst zu implementieren (oder, wie schon vorgeschlagen, einfach statische CSS-Dateien zu generieren).

        Sollte das Stylesheet nicht zwischengespeichert werden, könntest du dir den 'If-Modified-Since' Header (verfügbar in apache_request_headers()) anschauen und gegebenenfalls statt das CSS auzuliefern nur ein 304 Not Modified senden.

        Das wäre unerwünscht, wenn es nicht zwischengespeichert wird, braucht es mir nicht gleich das Design zu zerhauen.

        Bahnhof.

        Christoph

        1. hi,

          Sicher? Du hast, glaube ich, nicht verstanden, was ich dir sagen wollte.

          Ja, so war es.

          Rufe ich deine Test-Adresse auf und drücke F5, wird jedesmal ein 200er gesendet und die Ressource neu übertragen. Rufe ich eine statische CSS-Datei wiederholt auf, quittiert mir der Server das mit einem 304er und die Datei muss nicht erneut übertragen werden.

          In deinem Fall meinst du jetzt wohl das

          Last-Modified: Sat, 28 Jun 2008 12:11:28 GMT

          oder?
          Ich frag deshalb, weil ich bei aufruf deiner CSS auch einen 200er Quittiert bekomme, auch nach einem Refresh.

          Bei der dynamischen Ausgabe durch PHP kann der gute Apache aber nicht wissen, wann sich die Ausgabe des Skript geändert hat, d.h., es liegt an dir, diese Logik durch Auswertung des If-Modified-Since Headers selbst zu implementieren

          Das klingt Logisch und einfach umzusetzen, so werde ich es machen.

          Das wäre unerwünscht, wenn es nicht zwischengespeichert wird, braucht es mir nicht gleich das Design zu zerhauen.
          Bahnhof.

          Ich hatte dich falsch verstanden, ich wusste nicht genau, wofür der Statuscode 304 steht.

          Danke für die hilfe.

          mfg

          1. Moin.

            In deinem Fall meinst du jetzt wohl das

            Last-Modified: Sat, 28 Jun 2008 12:11:28 GMT

            oder?

            Meinte ich nicht, aber das Fehler dieser Angabe ist ein Symptom der beschriebenen Problematik.

            Ich frag deshalb, weil ich bei aufruf deiner CSS auch einen 200er Quittiert bekomme, auch nach einem Refresh.

            Wie überprüfst du den Statuscode? In Firefox' Seiteninformationen steht z.B. (immer?) der 200er, während die Live HTTP headers Erweiterung die Header der aktuellen Anfrage korrekt mitschneidet.

            Christoph

            1. hi,

              Ich frag deshalb, weil ich bei aufruf deiner CSS auch einen 200er Quittiert bekomme, auch nach einem Refresh.

              Wie überprüfst du den Statuscode? In Firefox' Seiteninformationen steht z.B. (immer?) der 200er, während die Live HTTP headers Erweiterung die Header der aktuellen Anfrage korrekt mitschneidet.

              Ich überprüfe das über die FF Developer Toolbar, ich lade mir mal die Live HTTP headers Erweiterung, das kenne ich nicht.

              mfg

              1. hi,

                ich lade mir mal die Live HTTP headers Erweiterung, das kenne ich nicht.

                Das hätte ich viel früher tun sollen :)

                Jetzt verstehe ich, Danke nochmals für die Tipps.

                mfg

                1. ich lade mir mal die Live HTTP headers Erweiterung, das kenne ich nicht.
                  Das hätte ich viel früher tun sollen :)
                  Jetzt verstehe ich, Danke nochmals für die Tipps.

                  versuch am besten auch "tamper data" - das addon finde ich recht cool

                  1. hi,

                    versuch am besten auch "tamper data" - das addon finde ich recht cool

                    Danke für den Tipp, dass sieht ja sehr Interessant aus.
                    Leider kennt es wohl kein CSS, da steht nur unknown, macht aber nichts, die LiveHTTPHeaders haben mich schon weiter gebracht.

                    mfg

        2. Sollte das Stylesheet nicht zwischengespeichert werden, könntest du dir den 'If-Modified-Since' Header (verfügbar in apache_request_headers()) anschauen und gegebenenfalls statt das CSS auzuliefern nur ein 304 Not Modified senden.

          Das wäre unerwünscht, wenn es nicht zwischengespeichert wird, braucht es mir nicht gleich das Design zu zerhauen.

          das ist mit dem gut kombinierbar, was ich vorschlug (nur nicht so fein ausgearbeitet): das file statisch schreiben und nicht bei jedem aufruf neu generieren - wenn das file zusammengesetzt wird (aus den 10 anderen files), prüft die routine lediglich, ob die sich die hashwerte der einzelnen files verändert haben, wenn nicht wird das bereits geschriebene file ausgeliefert und ggf 304 not modified mitgeschickt (sofern der client dieses file schon hat)

          das spart einerseits overhead beim datenübertragen, andererseits spart das ganze etwas last am server

          die noch bessere variante ist, die einzel-css-files in die datenbank zu legen - jedes mal wenn über das backend eines der unterfiles geändert wird, wird das haupt-css neu generiert und irgendwo hingelegt - dann brauchst auch keinen cron-job

          1. Moin.

            das ist mit dem gut kombinierbar, was ich vorschlug (nur nicht so fein ausgearbeitet): das file statisch schreiben und nicht bei jedem aufruf neu generieren - wenn das file zusammengesetzt wird (aus den 10 anderen files), prüft die routine lediglich, ob die sich die hashwerte der einzelnen files verändert haben, wenn nicht wird das bereits geschriebene file ausgeliefert und ggf 304 not modified mitgeschickt (sofern der client dieses file schon hat)

            Ein ähnliches System (ohne Generieren statischer Dateien) habe ich zum Bündeln von JavaScripten im Einsatz.

            Christoph

          2. Moin!

            Sollte das Stylesheet nicht zwischengespeichert werden, könntest du dir den 'If-Modified-Since' Header (verfügbar in apache_request_headers()) anschauen und gegebenenfalls statt das CSS auzuliefern nur ein 304 Not Modified senden.

            Das wäre unerwünscht, wenn es nicht zwischengespeichert wird, braucht es mir nicht gleich das Design zu zerhauen.

            das ist mit dem gut kombinierbar, was ich vorschlug (nur nicht so fein ausgearbeitet): das file statisch schreiben und nicht bei jedem aufruf neu generieren - wenn das file zusammengesetzt wird (aus den 10 anderen files), prüft die routine lediglich, ob die sich die hashwerte der einzelnen files verändert haben, wenn nicht wird das bereits geschriebene file ausgeliefert und ggf 304 not modified mitgeschickt (sofern der client dieses file schon hat)

            das spart einerseits overhead beim datenübertragen, andererseits spart das ganze etwas last am server

            Deine Argumentation ist irreführend.

            Es ist deutlich lastsparender, einfach auf Anforderung die Einzelteile des zu bildenden CSS zusammenzuführen und als Datei zu speichern, als zunächst von jedem einzelnen Einzelteil einen Hashwert auszurechnen, den mit einem vorher gespeicherten Hashwert zu vergleichen und nur im Bedarfsfall einer Änderung die neue Datei zu speichern.

            Das ganze Brimborium mit dem 304-Status erledigt der Server ja schon von alleine - deshalb speichern wir ja die statisch zusammengefügte Datei im Dateisystem, damit der Server dort das Generierungsdatum der Datei als "zuletzt verändert" nutzen kann, um das ganze Handling der Conditional-Requests machen zu können.

            die noch bessere variante ist, die einzel-css-files in die datenbank zu legen - jedes mal wenn über das backend eines der unterfiles geändert wird, wird das haupt-css neu generiert und irgendwo hingelegt - dann brauchst auch keinen cron-job

            Wo die Einzelteile liegen, ist für die Aufgabe vollkommen irrelevant.

            - Sven Rautenberg

            --
            "Love your nation - respect the others."
            1. Es ist deutlich lastsparender, einfach auf Anforderung die Einzelteile des zu bildenden CSS zusammenzuführen und als Datei zu speichern, als zunächst von jedem einzelnen Einzelteil einen Hashwert auszurechnen, den mit einem vorher gespeicherten Hashwert zu vergleichen und nur im Bedarfsfall einer Änderung die neue Datei zu speichern.

              das ist schon richtig - wenn die hashwerte bereits generiert wurden, ist es es wesentlich ressoucenschonender, nur die hashwerte zu lesen, als die kompletten css-teile und das spart in größeren dimensionen doch einiges an ressourcen

              Wo die Einzelteile liegen, ist für die Aufgabe vollkommen irrelevant.

              ansich schon - aber es es gibt dinge, die einfach besser wartbar sind als andere ;)