marc77 hat geschrieben:An sovielen Stellen im web liest man von dieser Methode und nun ist sie komplett falsch.
Sie ist für deinen Einsatzfall, eine statische Datei, falsch, weil du damit einen anderen, im Server eingebauten Mechanismus aushebelst und ihn im Skript selbst nicht übernimmst.
Hättest du ein Skript, wäre sie durchaus richtig (mit Skript meine ich etwas, was Programmlogik erfordert, du hast ja nur ein Skript, weil du ob_Dingens verwenden wolltest) – aber noch nicht der Weisheit letzter Schluss, denn am wenigsten Umstände verursacht die transparente Komprimierung durch den Server, also mit mod_deflate bzw. mod_gzip.
Durch das senden in gzip hat mir mein firebug angezeigt, dass ich 80% kb gespart habe, warum ist genau eine verschlimmbesserung eingetreten?!
Weil du, grob gesagt, das Nicht-Senden durch das Senden von komprimierten Daten ersetzt hast. Anstatt einen Gutteil Anfragen mit "Nicht geändert" und 0 Bytes Daten zu beantworten, beantwortest du jetzt
jede Anfrage mit 1/5 der tatsächlichen Datenmenge, was zwar weniger als 100% ist, aber immer noch mehr als 0. Du hast quasi den Kofferraum entrümpelt, aber schleppst jetzt ständig einen Anhänger hinter dir her – weniger Benzin verbrauchst du auf die Weise nicht unbedingt.
Am sinnvollsten ist der Einsatz beider Techniken.
Mal unabhängig von der css datei, haben meine Seiten haben alle gzip in form von ob_start("ob_gzhandler"); aktiv, soll ich das also überall abschalten?
Wenn deine Seiten alle PHP benötigen (im Sinne von besagter Programmlogik), kannst du das zwar drin lassen, aber es wäre wesentlich klüger, einfach mod_gzip einzusetzen, wenn's denn schon da ist. Damit hältst du den Komprimierungskram aus deinen Skripten raus und die Komprimierung wird auf alle (Text-) Dateien ausgedehnt, egal ob HTML, CSS oder Javascript, selbst auf die robots.txt – das bekommst du alles mit einer einmaligen Aktivierung (anstatt jede Datei einzeln mit ob_Dings zu versorgen).
ich hab also mod gzip
Das ist genauso gut wie mod_deflate, schalte es ein. Beide basieren IIRC auf derselben Bibliothek, mod_deflate ist lediglich an die internen Apache-2-Strukturen angepasst, mod_gzip an jene des Apache 1.
Eine deutsche Anleitung findest du unter
https://schroepl.net/projekte/mod_gzip/config.htm
[Verfallsdatum]
Wenn ich dann aber etwas geändert habe und beim user liegt eine datei die sagt, ändere mich erst in z.b einer Stunde, dann sieht er erst in einer Stunde die Änderungen korrekt?
Theoretisch ja (praktisch hängt das von den Browsereinstellungen ab, aber die kannst du eh nicht beeinflussen).
Die Anleitung für ExpiresByType beim Apache 1.3 findest du unter
https://httpsd.apache.org/docs/1.3/mod/ ... iresbytype, sie ist auch nicht schwer zu verstehen, es sei denn, du kannst nullkommagarkein Englisch.
Ich verändere z.b. eine css einstellung wegen einem bild, wenn der user dann die seite aufruft, passt das css für ihn ja nicht mehr, er bekommt also die seite falsch dargestellt.
Das ist der Nachteil eines Verfallsdatums. Ob das wirklich dramatisch ist, muss jeder für sich selbst entscheiden; wer möchte, kann mit sich ändernden URLs arbeiten (die vorgeschlagene Versionsnummer im Dateinamen).
Code: Alles auswählen
header("Content-type: text/css; charset: UTF-8");
Unabhängig vom Thema: Diese Zeile ist falsch, Attribute werden mit Gleichheitszeichen belegt, also
text/css; charset=utf-8
Code: Alles auswählen
header("Cache-Control: must-revalidate");
$offset = 60 * 60 ;
$ExpStr = "Expires: "
Das ist ein Widerspruch. Erst verlangst du mit must-revalidate, dass der Browser bei jeder Verwendung das Objekt mit dem Server abgleichen muss, dann setzt du mit Expires ein Verfallsdatum, welches besagt, dass der Browser das Objekt bis zum Verfall nicht mehr prüfen braucht.