Zur Navigation

Gzip-Compression nutzen für css und js

1 krieger98

Ich möchte die Gzip-Compression nutzen für css und js. Ich habe deshalb in der "htaccess.txt" folgendes eingefügt:
IfModule mod_deflate.c>
<FilesMatch "\.(ico|js|css|html|htm|php|xml|htc)$">
SetOutputFilter DEFLATE
</FilesMatch>
</IfModule>
und für den Browser Cache:
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif "access plus 7 days"
ExpiresByType image/ico "access plus 7 days"
ExpiresByType image/jpeg "access plus 7 days"
ExpiresByType image/jpg "access plus 7 days"
ExpiresByType image/png "access plus 7 days"
ExpiresByType text/css "access plus 7 days"
ExpiresByType text/javascript "access plus 7 days"
ExpiresByType application/x-javascript "access plus 7 days"
ExpiresByType application/javascript "access plus 7 days"
</IfModule><IfModule mod_deflate.c>
Beide Funktionen klappen bisher nicht !
Pagespeed gibt folgendes Ergebiss aus:
https://developers.google.com/speed/pagespeed/insights/?url=www.fahrrad-workshop-sprockhoevel.de&tab=desktop

Auf dem Server sind folgende Funktionen möglich:
http://www.fahrrad-workshop-sprockhoevel.de/info.php

Was mache ich verkehrt und muss geändert werden?

01.01.2015 20:32

2 Käptn Blaubär

Hallo,

welche Apache-Module bei Dir verfügbar sind, sieht man mit PHP-Info nicht. Da müßtest Du den Webhoster fragen. Gerade mod_deflate ist manchmal nicht dabei. Da gäbe es aber notfalls eine PHP-Ersatzlösung.

Außerdem hast Du entweder falsch kopiert oder echte Fehler in der .htaccess:
1.
Vor dem 1. Vorkommen IfModule mod_deflate.c> fehlt das kleiner-Zeichen <.
2.
Das 2. Vorkommen <IfModule mod_deflate.c> ist zu viel.

Ich will Jörg aber nicht vorgreifen.

01.01.2015 21:49

3 krieger98

Zitat von Käptn Blaubär
Hallo,

welche Apache-Module bei Dir verfügbar sind, sieht man mit PHP-Info nicht. Da müßtest Du den Webhoster fragen. Gerade mod_deflate ist manchmal nicht dabei. Da gäbe es aber notfalls eine PHP-Ersatzlösung.

Außerdem hast Du entweder falsch kopiert oder echte Fehler in der .htaccess:
1.
Vor dem 1. Vorkommen IfModule mod_deflate.c> fehlt das kleiner-Zeichen <.
2.
Das 2. Vorkommen <IfModule mod_deflate.c> ist zu viel.

Ich will Jörg aber nicht vorgreifen.

Das war ein Kopier-Fehler?

01.01.2015 21:58

4 Käptn Blaubär

Nachtrag:

Ich habe gerade in Deinen Quelltext reingeschaut. Da sehe ich folgenden Codeschnippsel
<?php ob_start("ob_gzhandler"); ?>

Das wäre für HTML-Seiten die erwähnte Komprimierlösung per PHP. Aber der Codeschnippsel müßte ganz an den Anfang (vor die DOCTYPE-Angabe), und Du müßtest sicherstellen, daß die HTML-Dateien PHP-geparst werden.

Zitat von krieger98
Das war ein Kopier-Fehler?
Ob das ein Kopierfehler war, weiß ich nicht. Damit hatte ich gemeint: synthaktisch richtige .htaccess, aber falsch ins Forum kopiert.

01.01.2015 22:09

5 Jörg Kruse

Ich habe deshalb in der "htaccess.txt" folgendes eingefügt:

Unter welchem Namen hast du die Datei hochgeladen? Auf dem Server muss sie .htaccess heißen, d.h. ohne Endung .txt und mit einem Punkt vorne

01.01.2015 22:46

6 krieger98

Zitat von Jörg
Ich habe deshalb in der "htaccess.txt" folgendes eingefügt:

Unter welchem Namen hast du die Datei hochgeladen? Auf dem Server muss sie .htaccess heißen, d.h. ohne Endung .txt und mit einem Punkt vorne
Ich habe die Datei mit em Namen ".htaccess" hochgeladen.
Leider klappt nur die Cache-Funktion für HTM, CSS,JPG .
Laut Rücksprache mit 1und1 gibt es keine Unterstützung bei Html-Dateinen (nur für PHP) für die GZIP-Komprimierung. Was kann ich da noch machen?

02.01.2015 17:53

7 Jörg Kruse

Da bleibt noch die PHP-Lösung, die Käptn Blaubär schon vorgeschlagen hat:

Zitat von Käptn Blaubär
Ich habe gerade in Deinen Quelltext reingeschaut. Da sehe ich folgenden Codeschnippsel
<?php ob_start("ob_gzhandler"); ?>

Das wäre für HTML-Seiten die erwähnte Komprimierlösung per PHP. Aber der Codeschnippsel müßte ganz an den Anfang (vor die DOCTYPE-Angabe), und Du müßtest sicherstellen, daß die HTML-Dateien PHP-geparst werden.

In der folgenden Anleitung ist z.B. unter 2.2 beschrieben, wie man Dateien mit der Endung .html als PHP parsen lassen kann, ohne diese umzubenennen:

http://www.chinnow.com/anleitung-gzip-kompression.htm

02.01.2015 18:22

8 krieger98

Ich habe folgendes versucht:
1) <?php ob_start("ob_gzhandler"); ?>
am Anfang der HTML Seite eingefügt.
2) Die htaccess sieht wie folgt aus:
AddType x-mapp-php4 .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>

Die Komprimierung wird durchgeführt aber die Webseite wird nicht mehr richtig dargestellt. Die Seite ist total verschoben es sieht so aus, dass die CSS-Datei nicht mehr richtig dargestellt und abgearbeitet wird.

03.01.2015 10:52

9 Jörg Kruse

Das sind die ersten Zeilen der Quellextanzeige des Browsers

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

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

Die PHP-Code-Zeile muss, wie Käptn Blaubär schon geschrieben hat, in der allerersten Zeile stehen, das heißt oberhalb der Doctype-Angabe! Dadrüber darf auch keine Leerzeile stehen

Wenn die PHP-Code-Zeile in der Quelltextanzeige des Browsers sichtbar ist, bedeutet das allerdings auch, dass der PHP-Code noch nicht ausgeführt wurde.

Das liegt wahrscheinlich an der PHP-Version, die noch angepasst werden muss, diese Direktive bezieht sich nur auf PHP4:

AddType x-mapp-php4 .php .htm .html .css 

Die von mir verlinkte Anleitung ist diesbezüglich wohl schon etwas veraltet - hier ein aktueller Link von 1und1 zur Addtype-Direktive:

https://hilfe-center.1und1.de/skript--und-programmiersprachen-c82634/php-c82686/einrichtung-c82738/php-version-auf-managed-server-umstellen-a791784.html

Pass die Versionszahl mal an die auf deinem Webspace laufende PHP-Version an, also z.B.:

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

03.01.2015 11:11 | geändert: 03.01.2015 11:16

10 krieger98

Auf meinem Zugang ist PHP5.5 eingestellt. Ich habe alle Änderungen durchgeführt:
AddType x-mapp-php5.5 .php .htm .html .css
die <?php ob_start("ob_gzhandler"); ?> war schon richtig plaziert.
Das Ergebnis ist, die Seite wird immer noch nicht richtig dargestellt.

Welche Möglichkeiten habe ich noch?
Alle Seiten mit GZIP komprimieren und hochladen ins entsprechende Verzeichnis.
Ich habe folgendes mal probiert mit:
# BEGIN Gzip Compression
AddEncoding gzip .gz
<filesmatch "\.js\.gz$">
AddType "text/javascript" .gz
</filesmatch>
<filesmatch "\.css\.gz$">
AddType "text/css" .gz
</filesmatch>
<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME} \.(js|css)$
RewriteCond %{REQUEST_FILENAME}.gz -f
RewriteRule ^(.*)$ $1.gz [QSA,L]
</ifmodule>
So wie das aussieht klappt es jetzt::
https://developers.google.com/speed/pagespeed/insights/?url=www.fahrrad-workshop-sprockhoevel.de&tab=desktop
Es werden aber noch einige Verbesserungen vorgeschlagen die mir teilweise aber nichts sagen.

03.01.2015 13:13 | geändert: 03.01.2015 13:48