Zur Navigation

Gzip-Compression nutzen für css und js [2]

11 Jörg Kruse

die <?php ob_start("ob_gzhandler"); ?> war schon richtig plaziert.

Ja, wegen deiner Cache-Anweisungen hatte ich noch die alte Seite serviert bekommen :)

Das Ergebnis ist, die Seite wird immer noch nicht richtig dargestellt.

Das liegt vermutlich an dem nicht geparsten PHP-Code. Der Browser versucht diesen als HTML zu interpretieren.

Versuchen wir es mal so, wie es unter dem folgenden Link beschrieben ist:

https://hilfe-center.1und1.de/skript--und-programmiersprachen-c82634/htaccess-c83883/haeufig-verwendete-htaccess-direktiven-a784801.html

Dort braucht es auch noch eine AddHandler-Direktive:

# lässt andere Dateiendungen für PHP5-Skripte zu:
# (verwenden Sie es nicht zusammen mit u.g. x-mapp-php4)
#
AddType x-mapp-php5 .php
AddHandler x-mapp-php5 .php

Ggf. kannst du statt der 5 auch eine 5.5 probieren

Und die gewünschten Endungen wären dann auch noch zu ergänzen:

AddType x-mapp-php5.5 .php .htm .html .css
AddHandler x-mapp-php5.5 .php .htm .html .css

03.01.2015 13:50 | geändert: 03.01.2015 13:50

1 Forenmitglied fand diesen Beitrag gut

12 krieger98

Vielen Dank.
Ich habe das auch mal getestet.
"AddType x-mapp-php5.5 .php .htm .html .css
AddHandler x-mapp-php5.5 .php .htm .html .css"
Die Seite wurde zwar dargestellt und die Kompression war vorhanden aber die CSS-Datei wurde nicht abgearbeitet.

03.01.2015 17:23

13 Jörg Kruse

Wenn die CSS-Dateien auch auf diese Weise komprimiert werden sollen, dann benötigen auch sie den genannten PHP-Code in der allerersten Zeile:

<?php ob_start("ob_gzhandler"); ?>

03.01.2015 17:33

14 krieger98

Ich habe alles nochmal geändert den "<?php ob_start("ob_gzhandler"); ?>"
in die oberste Zeile der CSS eingefügt und
"AddType x-mapp-php5.5 .php .htm .html .css
AddHandler x-mapp-php5.5 .php .htm .html .css"
in die htaccess plaziert.
Die Seiteninhalte werden immer noch nicht richtig dargestellt.
Was könnte man noch versuchen?

04.01.2015 09:17

15 Jörg Kruse

Die Änderungen hast du aber wieder rückgängig gemacht?

Kannst du vielleicht in einem eigenen Unterverzeichnis eine Demoseite aufsetzen, mit der entsprechenden .htaccess Datei und den zugehörigen CSS-Dateien, damit man das Problem "live" analysieren kann? wenn du die .htaccess Datei in dieses Unterverzeichnis platzierst, wirkt sie sich auch nur dort aus, so dass deine Hauptseite nicht entstellt wird.

Und bitte noch den gesamtem Inhalt der aktuellen .htaccess Datei hier posten.

04.01.2015 11:43

16 krieger98

Ich habe mal eine Testseite angelegt:
http://s201291267.online.de/
Die .htaccess sieht wie folgt aus:
AddType x-mapp-php5.5 .php .htm .html .css
AddHandler x-mapp-php5.5 .php .htm .html .css
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/css "access plus 1 month"
ExpiresByType text/javascript "access plus 1 month"
ExpiresByType text/html "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 month"
</IfModule>
In der CSS-Datei ist eingefügt:
<?php ob_start("ob_gzhandler"); ?>
#haupt_kopf {
position: absolute;
width: 980px;
height: 105px;
z-index: 1;
left: -1px;
top: 0px;}

04.01.2015 17:45

17 Jörg Kruse

Die CSS-Dateien werden mit dem Content-Type 'html/css' ausgeliefert - deswegen erkennt der Browser diese nicht als CSS-Dateien

In PHP kann man mittels der Funktion header() einen HTTP-Header einbauen, der den korrekten Content-Type übermittelt

Füge mal diese zusätzliche Code-Zeile in den PHP-Code der CSS-Dateien:

<?php
ob_start("ob_gzhandler");
header("Content-type: text/css");
?>

04.01.2015 19:49 | geändert: 04.01.2015 19:50

18 krieger98

Zitat von Jörg
Die CSS-Dateien werden mit dem Content-Type 'html/css' ausgeliefert - deswegen erkennt der Browser diese nicht als CSS-Dateien

In PHP kann man mittels der Funktion header() einen HTTP-Header einbauen, der den korrekten Content-Type übermittelt

Füge mal diese zusätzliche Code-Zeile in den PHP-Code der CSS-Dateien:

<?php
ob_start("ob_gzhandler");
header("Content-type: text/css");
?>

Vielen Dank für Deine Mühe.
Ich habe das Eingefügt habe leider keine Änderung.

04.01.2015 20:55

19 Jörg Kruse

In welche CSS-Datei hast du den Code eingebaut, in diese (?):

http://s201291267.online.de/ebene-tipps2015.css

Diese Datei wird noch mit dem falschen Content-Type "text/html" ausgeliefert

Die vier PHP-Code-Zeilen befinden sich ganz am Anfang der Datei? es darf auch keine Leerzeile dadrüber oder ein Leerzeichen davor stehen! Die Datei muss mit den fünf Zeichen <?php beginnen.

Ich habe den PHP-Code mal bei mir auf einem lokalen Server getestet: die betreffende CSS-Datei wird dann komprimiert mit dem korrekten Content-Type "text/css" ausgeliefert.

04.01.2015 21:12 | geändert: 04.01.2015 21:16

20 krieger98

Ich habe das nochmal geprüft die CSS-Datei ebene-tipps2015.css sieht im Kopf so aus:
<?php
ob_start("ob_gzhandler");
header("Content-type: text/css");
?>
#haupt_kopf {
position: absolute;
width: 980px;
height: 105px;
z-index: 1;
left: -1px;
top: 0px;
}
Das ist noch richtig.
Warum das im Browser anders dargestellt wird verstehe ich nicht.

04.01.2015 22:23