Ankündigung

Einklappen
Keine Ankündigung bisher.

Gzip CSS Browsercache

Einklappen

Neue Werbung 2019

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

  • Gzip CSS Browsercache

    Hallo,

    bin gerade bei meine css files zu komprimieren. Ich kenne eigentlich alle methoden (mod_deflate, htaccess, direkt in die css und in php umbenennen usw.).

    Ich habe mich trotzallem für die einfachste aber für mich effektivste Methode entschieden. Ich schreibe einfach

    Code:
    if (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false) {
    header('Content-type: text/css');
    ob_start("ob_gzhandler");
    in die css datei ganz oben und benenne Sie in php um.

    Frage: Ist die Browserunterstützung bei allen Browsern aufgrund der Umbenennung trotzdem gegeben? ich möchte eigentlich ungern auf das Caching durch den Browser verzichten auch wenn ich durch die komprimierung einiges einspare sollte die datei nicht dauerhaft ausgeliefert werden nur weil Sie jetzt php und nicht css heisst.
    Ich denke durch
    header('Content-type: text/css');
    sagt man dem browser das es eine css datei ist und er behandelt die php datei dann wie eine css aber ich bin mir nicht sicher.

    danke für eine Rückmeldung!


  • #2
    Hallo marc77,

    ich finde die Variante nicht besonders einfach. Füge doch in der .htaccess einfach eine Anweisung hinzu, dass deine CSS-Dateien als PHP-Dateien zu behandeln sind.

    Was den GZ-output-Handler von PHP angeht, so brauchst du keine Abfrage, er entscheidet das an Hand von Request-Headern selbst. Die Browser-Unterstützung ist IMHO kein Problem, denn du sagst dem Browser ja, was er erwarten kann: text/css.
    Viele Grüße,
    Dr.E.

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    1. Think about software design before you start to write code!
    2. Discuss and review it together with experts!
    3. Choose good tools (-> Adventure PHP Framework (APF))!
    4. Write clean and reusable software only!
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Kommentar


    • #3
      Belastet den Server soetwas nicht unnötig?
      So muss ja bei jedem Aufruf einer CSS-Datei diese erst komprimiert werden.

      Besser wäre es doch, wenn man die CSS-Datei einmal komprimiert als GZIP oder Deflate-Stream abspeichert.
      Der Server brauch dann nur noch die fertige GZIP / den fertigen Deflate-Stream senden, was die CPU schont.

      Wie setzt man sowas im Apache um?

      Kommentar


      • #4
        @: Füge doch in der .htaccess einfach eine Anweisung hinzu, dass deine CSS-Dateien als PHP-Dateien zu behandeln sind.

        das habe ich bereits probiert, bekomme aber immer einen 500 Servererror. ich habe root access..weiss aber nicht wie der code für mich heissen muss. habe schon einige probiert, wie kann ich den rausfinden was genau dort stehen soll?

        PHP-Code:
        AddHandler application/x-httpd-php css 
        Ich habe auf all meinen php seiten diese ob_start("ob_gzhandler"); variante aktiv. Ist das jetzt im Grunde falsch?! dachte ich mach damit was gutes...

        Kommentar


        • #5
          Zitat von marc77 Beitrag anzeigen
          Ich habe auf all meinen php seiten diese ob_start("ob_gzhandler"); variante aktiv. Ist das jetzt im Grunde falsch?! dachte ich mach damit was gutes...
          Für den Benutzer ist das defintiv was gutes.

          Mein Argument mit der CPU-Auslastung war auch nur eine Frage. Kann gut sein, dass das minimal ist. Hängt evtl auch vom Kompressionsgrad ab.

          Da sich CSS-Dateien ja kaum ändern, denke ich, sollte man da doch irgendwie auch "vorkomprimierte" Daten ausliefern können. Einmal komprimieren, beliebig oft senden.

          Bei dynamischen PHP Seiten muss man ja zwangsläufig ob_start("ob_gzhandler"); verwenden, weil der Inhalt fast immer anders ist.

          Kommentar


          • #6
            man könnte für css z.b. auch ein verfalldatum setzen, allerdings hat man dann das problem, dass wenn man etwas ändert die änderung erst nach dem Verfalldatum greift und das kann wiederum zu darstellungsfehlern kommen.

            Kommentar


            • #7
              Zitat von marc77 Beitrag anzeigen
              ich möchte eigentlich ungern auf das Caching durch den Browser verzichten
              Dann musst du es in diesem Falle selber implementieren - weil PHP-Scripte per Default mit Headern ausgeliefert werden, die das Caching komplett untersagen.

              (Das selber zu implementieren, erfordert Kenntnisse über den Umgang mit dem HTT-Protokoll.)

              Ich denke durch
              header('Content-type: text/css');
              sagt man dem browser das es eine css datei ist und er behandelt die php datei dann wie eine css aber ich bin mir nicht sicher.
              Man sagt dem Client damit, um welche Art von Daten es sich beim Inhalt der Ressource (nicht „Datei“) handelt.
              Darüber, wie in Punkto Caching zu verfahren ist, sagt das überhaupt nichts.

              Kommentar

              Lädt...
              X