| 

.NET C# Java Javascript Exception

0
Ich habe mich nun etwas über die Möglichkeiten des Apaches im Bezug auf die GZIP-Komprimierung belesen und beschlossen, dass ich oft benutzte Dateien (Stylesheet, Javascript) bereits gezippt und minimiert im Filesystem ablege um sie somit ohne zusätzlichen serverseitigen Rechenaufwand ausliefern zu können.

Kann ich für Clients, die mir per HTTP-Header sagen, dass sie kein gzip unterstützen, irgendwie auf die nicht komprimierte Version der Datei zurückgreifen oder die komprimierte Datei gegebenenfalls wieder dekomprimieren?
25.10.2009
Blauesocke 637 2 8
1 Antwort
2
Na dann mal nach etlichen Stunden das Ergebnis langer Recherchearbeit, letztlich ohne mod_deflate oder mod_gzip, ganz einfach nur mit mod_rewrite.

Ich komprimiere beim Erzeugen der zu cachenden CSS- und Javascript-Dateien nun mit den in PHP verfügbaren zlib-Funktionen eine zusätzliche vorkomprimierte Datei, ich ich dann über eine Apache-Konfiguration, die in einer .htaccess-Datei lagert, wie folgt ausliefere:

Meine beiden neuen Datentypen als gzip registrieren
AddEncoding x-gzip .cssgz
AddEncoding x-gzip .jsgz

Dennoch den richtigen Content-Type für die jeweiligen Dateien ausliefern:
AddType text/css        .cssgz
AddType text/javascript .jsgz

Je nach Client zwischen den Dateien separieren:
RewriteCond %{HTTP:Accept-Encoding} .*gzip.*
RewriteRule ^cache/(.*?(?:\.css|\.js))$ cache/$1gz [L]
RewriteRule ^cache/(.*?)$ - [L]

Hierbei greift die erste Regel nur, wenn die RewriteCond wahr ist, sprich, der Client dem Server mitteilt, dass er in der Lage ist, gzip-komprimierte Dateien zu dekomprimieren.

Aus einer 80kb großen CSS-Datei werden so lockerflockige ~10kb, die sich garantiert schneller und vorallem ohne zusätzlichen dafür nötigen Rechenaufwand durch die Welt bewegen.
25.10.2009
Blauesocke 637 2 8

Stelle deine Javascript-Frage jetzt!