Heinz-Wo
Themenersteller
Beginner (12 Beiträge)

gzip und htaccess

am 08.03.2012, 12:49 Uhr eröffnete Heinz-Wo folgenden Thread
.htaccess    14859 mal gelesen    22 Antwort(en).

Hallo,

ich habe die externen js-Dateien einmal ungezippt und ein weiteres Mal gezippt auf dem Server liegen und nutze für die Steuerung der Auslieferung folgenden htaccess-Anweisung, die von tutorialajax.com/compress-javascript-with-gzip.html stammt:



RewriteEngine On

RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{REQUEST_FILENAME}.jgz -f
RewriteRule (.*)\.js$ $1\.js.jgz [L]
AddType "text/javascript" .js.jgz
AddEncoding gzip .jgz


Kann mir bitte jemand dabei helfen, diese Anweisungen so zu ergänzen, dass damit vergleichbar auch die Ausgabe vorkomprimierter css-Dateien geregelt wird?

LG Wolfgang


seitenreport
Avatar seitenreport
Inhaber
TYPO3 Senior Developer
Content Gott (1772 Beiträge)
am 08.03.2012, 13:20 Uhr schrieb seitenreport

Heinz-Wo schrieb:

Kann mir bitte jemand dabei helfen, diese Anweisungen so zu ergänzen, dass damit vergleichbar auch die Ausgabe vorkomprimierter css-Dateien geregelt wird?


Hallo Wolfgang,

hierzu einfach folgende Zeilen vor der AddEncoding-Anweisung ergänzen:

RewriteRule (.*)\\.css$ $1\\.css.jgz [L]
AddType "text/css" .css.jgz

Beste Grüße,
Matthias


SEO Analyse und Website-Check mit Seitenreport

Heinz-Wo
Beginner (12 Beiträge)
am 08.03.2012, 17:12 Uhr schrieb Heinz-Wo

Danke, Matthias.

Das werde ich dann heute Abend so einfügen.

Spricht eigentlich irgendwas gegen ein zippen solcher externen Dateien, also irgendwelche "Unverträglichkeiten" bei bestimmten, gegf. älteren Browserversionen? (Mit einem nicht funktionierendem jquery nebst Pulgins kann man bei Aufruf der Website noch leben, mit einer nicht funktionierenden css aber nicht.)

LG Wolfgang


hansen
Foren Moderator
Content Gott (1886 Beiträge)
am 08.03.2012, 17:32 Uhr schrieb hansen

Heinz-Wo schrieb:

Spricht eigentlich irgendwas gegen ein zippen solcher externen Dateien, also irgendwelche "Unverträglichkeiten" bei bestimmten, gegf. älteren Browserversionen?


Hallo Wolfgang,

wenn Du die ungezippte Version auch hochgeladen hast, gibt es keine Problem.
Der Browser nimmt sich dann einfach diese.

Gruß
hansen


Nepal Rundreisen


gelöschter Benutzer
am 08.03.2012, 18:42 Uhr schrieb

Hallo Wolfgang,

mir wäre es zu viel Aufwand jede Datei einzel zu komprimieren. Es würde auch ausreichen das Apache Module mod_deflate zu aktivieren, das kümmert sich um alles.


Heinz-Wo
Beginner (12 Beiträge)
am 08.03.2012, 22:58 Uhr schrieb Heinz-Wo

Danke für Eure Antworten.

Ultima schrieb:

.... Es würde auch ausreichen das Apache Module mod_deflate zu aktivieren, das kümmert sich um alles.



Das habe ich zuerst gemacht, ist aber wohl nicht aktiviert, hat jedenfalls nicht gearbeitet.

LG Wolfgang


Heinz-Wo
Beginner (12 Beiträge)
am 17.03.2012, 16:12 Uhr schrieb Heinz-Wo

Hallo,

nachdem das mit der Vorkomprimierung der css-Dateien dank Eurer Hilfe wunderbar geklappt hat, erlaube ich mir eine weitere Bitte um Unterstützung.

Die einzigen Dateien, die jetzt noch unkomprimiert übertragen werden, sind die html-Seiten. Das ist mir i.d.T. zuviel Aufwand, die alle vorzukomprimieren und zu pflegen. Also habe bei Strato, meinem Provider, nachgefragt, ob die denn nicht vielleicht bereit wären mod_deflate zu aktivieren. Die Antwort war, dass zwar mod_deflate nicht aktiviert wäre, dafür aber mod_gzip.

Also habe ich es mit folgendem Code versucht:

<IfModule mod_gzip.c>
mod_gzip_on yes
mod_gzip_static_suffix .jgz
mod_gzip_can_negotiate yes
AddEncoding gzip .gz
mod_gzip_update_static no
mod_gzip_item_include file \\.(html)$
mod_gzip_item_exclude file \\.(css|js|exe)$
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
mod_gzip_dechunk yes
</IfModule>

Funzt aber nicht. Kein 500er oder ähnliche Unannehmlichkeiten, aber auch keine Komprimierung.

Der Code ist von hier: www.homepage-performance.de/websites-komprimiert-ausliefern-5.html



Kann mir einer sagen, was nicht stimmt?

LG Wolfgang


x-f
Avatar x-f
programmierer
Beginner (19 Beiträge)
am 17.03.2012, 20:24 Uhr schrieb x-f

Hallo,

ist auch klar warum da nciht kommst.
Wenn die if Abfrage außen ist, dann schaut er ob der Mod existiert.
gzip ist eh lahm -> deflate ist wesentlich schneller.

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript
</IfModule>

<FilesMatch "\\.js\\.gzip$">
AddType "text/javascript" .gzip
</FilesMatch>
<FilesMatch "\\.css\\.gzip$">
AddType "text/css" .gzip
</FilesMatch>
AddEncoding gzip .gzip


Heinz-Wo
Beginner (12 Beiträge)
am 18.03.2012, 07:04 Uhr schrieb Heinz-Wo

Hallo Unbekannter,

nimms mir nicht übel, aber es macht relativ wenig Sinn auf deflate zu verweisen, wenn es serverseitig nicht installiert ist.

Und dass bei einer "if-Bedingung" geschaut wird, ob das mod vorhanden ist, ist mir schon klar, das ist ja doch der Sinn der Sache.

Wenn kein Fehler in der htaccess steckt, dann wäre meine einzige Erklärung, dass die Auskunft von Strato falsch ist.

LG Wolfgang


seitenreport
Avatar seitenreport
Inhaber
TYPO3 Senior Developer
Content Gott (1772 Beiträge)
am 19.03.2012, 09:06 Uhr schrieb seitenreport

Ultima schrieb:

mir wäre es zu viel Aufwand jede Datei einzeln zu komprimieren. [...]


Hallo Thomas,

darum sind wir doch Entwickler, um derartiges zu automatisieren:

[SH]
#!/bin/sh
# Linux Shell Kommando, gzipped alle im Verzeichnis liegenden CSS-Dateien rekursiv
gzip -9 -r template/css/*.css
[/SH]

Alternativ via PHP:

<?php
/* alle CSS und JS Dateien im Verzeichnis gzippen */

$types = array(\'css\', \'js\');
foreach ($types as $type) {

$files = glob(\'*.\'.$type);
foreach($files as $file){
echo \'gzippe: \'.$jsFile;

$name = basename($file);
$newname = $basename.\'.gz\';

// Encoding
$gz = gzencode(file_get_contents($name),9);

// GZIP erfolgreich?
if ($gz) echo \' (gzip Encoding erfolgreich)\';
else echo \' (gzip Encoding Fehler)\';

// GZIP als neue Datei schreiben
if (file_put_contents($newname,$gz)) echo \' (.gz Datei erzeugt)
\';
else echo \' (.gz Datei konnte nicht erzeugt werden: \'.$newname.\')
\';
}
}
echo \'Auftrag erledigt.\';
?>


Beste Grüße,
Matthias


SEO Analyse und Website-Check mit Seitenreport


gelöschter Benutzer
am 19.03.2012, 11:33 Uhr schrieb

Es wär mir trotzdem noch zu viel arbeit
Bei jeder Modifikation oder neuen Datei müsste man es wieder komprimieren. Von daher ist der Weg mit der .htaccess schon ganz praktisch.

mod_gzip
[SH]
<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \\.(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</IfModule>
[/SH]

mod_deflate
[SH]
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/* image/svg+xml application/*
</IfModule>

[/SH]

Und das ganze dann noch Cachen:
mod_expire
[SH]
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/* "access 2 months"
ExpiresByType text/html "access 5 minutes"
ExpiresByType application/* "access 2 months"
ExpiresByType application/xhtml+xml "access 5 minutes"
ExpiresByType image/* "access 2 months"
ExpiresByType video/* "access 2 months"
ExpiresByType audio/* "access 2 months"
</IfModule>
[/SH]


Ein Tippfehler oder liege ich falsch, statt $basename nur $name ?
[PHP]$name = basename($file);
$newname = $basename.\'.gz\';[/php]




« zurück zu: .htaccess

Das Seitenreport Forum hat aktuell 5273 Themen und 36107 Beiträge.
Insgesamt sind 48345 Mitglieder registriert.