Heinz-Wo
Themenersteller
Beginner (12 Beiträge)
gzip und htaccess
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
seitenreportInhaber
TYPO3 Senior Developer
Content Gott (1772 Beiträge)
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
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)
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
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.
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
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
programmierer
Beginner (19 Beiträge)
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
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
seitenreportInhaber
TYPO3 Senior Developer
Content Gott (1772 Beiträge)
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
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]
Das Seitenreport Forum hat aktuell 5275 Themen und 36110 Beiträge.
Insgesamt sind 48360 Mitglieder registriert.
Beitrag erstellen
EinloggenKostenlos registrieren