Jörg Reinholz: Das Skript zum Sonntag; Minifiziertes und gezipptes CSS senden

Beitrag lesen

Moin!

Atomkraftwerke vers. Energiesparen

wäre es vermutlich immer noch sinnvoller den Webserver (sofern er die komprimierten Dateien nicht eh schon cached), die einmalig komprimierten Dateien ausliefern zu lassen (siehe z.B. https://httpd.apache.org/docs/current/mod/mod_deflate.html#precompressed).

mfg
Woodfighter

Since mod_deflate re-compresses content each time a request is made, some performance benefit can be derived by pre-compressing the content and telling mod_deflate to serve them without re-compressing them. This may be accomplished using a configuration like the following:

Übersetzt:

Da mod_deflate jedes Mal wenn ein Request erfolgt die Inhalte erneut komprimiert können einige Leistungsvorteil durch Vorkomprimierung und die Konfiguration von mod_deflate erreicht werden - in dem vermieden wird, diese erneut zu komprimieren. Dies kann unter Verwendung einer Konfiguration wie folgt erreicht werden.

Aus der Dokumentation:

    RewriteCond "%{HTTP:Accept-encoding}" "gzip"
    RewriteCond "%{REQUEST_FILENAME}\.gz" -s
    RewriteRule "^(.*)\.css" "$1\.css\.gz" [QSA]

Für Menschen, die "English4poors" nicht können, übersetzt:

Wenn der Useragent meldet, dass er gzip kann, dann wird bei einem Request nach einer css-Datei geschaut, ob es deren gezippte Version schon gibt - und (wenn beides passt) - die gezippte Version ausgeliefert. Was hier nicht steht, ist, dass auch der Etag noch vom Apache berechnet werden muss.

~Genau das~ (Mist: Durchstreichen geht nicht.) Ähnliches/Etwas wichtiges mehr macht mein Skript!

Wenn der Useragent meldet, dass er gzip kann, dann wird bei einem Request nach einer css-Datei geschaut, ob es deren gezippte Version schon gibt - und (wenn beides passt) - die gezippte Version ausgeliefert. Gibt es die gezippte Version nicht, dann wird diese erzeugt und ausgeliefert. Kann der useragent (angeblich) kein gzip, dann gibt es nur die minifizierte Version. Auch der Etag wird "vorgespeichert".

Da ist dann doch ein kleiner Unterschied - oder?

Für mein Skript reicht es, das CSS-File zu verändern und eine der gezippten Dateien oder das .etag - File zu löschen. Der Rest wird "einfach, schnell und leise" beim nächsten Abruf erledigt.

Jetzt stell Dir mal einen Windows-Benutzer vor, der ohne Putty & Co. zu kennen oder einen ssh-Zugang zu haben (was mir als unbenutzbar gilt, aber viele Hoster noch immer so verkaufen), mod_gzip benutzen soll, also die Komprimate selbst erzeugen und ablegen muss.

Jörg Reinholz