Serie High Performance Websites – Teil 4: Weniger ist Mehr !

Teil 4 von 6 in der Blogserie High Performance Websites

high performance serie3 Serie High Performance Websites   Teil 4: Weniger ist Mehr !Ein weiterer wichtiger Punkt bei der Optimierung ist das Thema Kompression, hierbei werden sämtliche noch komprimierbaren Inhalte (HTML, CSS, JavaScript, …) geschrumpft und so in einer verkleinerten Version ausgeliefert.

Die durchschnittliche Einsparung durch Komprimierung beträgt bis zu 70% was bedeutet das nur 30% des ursprünglichen Dateiinhaltes übertragen werden müssen. In den meisten Setups wird “gzip” für die Verkleinerung der ܜbertragungmenge verwendet, gzip bietet hier eine bessere Komprimierungsrate als “deflate”.

Um die Komprimierung in Apache zu aktivieren muss mod_deflate geladen werden, zusätzlich zum laden des Moduls muss in der VirtualHost (oder globalen) Konfiguration die Kompression aktiviert werden.

AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript

Zusätzlich lässt sich mit dem Parameter DeflateCompressionLevel der Komprimierungsgrad festlegen, die Grundeinstellung ist hier meist ausreichend.

Einige ältere Browserversionen unterstützen leider keine Kompression, deswegen sollten zusätzlich folgende Einstellungen hinterlegt werden um auch diesen “Exoten” Zugang zur Webpräsenz zu ermöglichen.

BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

Durch die nun gesetzten Einstellungen werden sämtliche “textuellen” Inhalten wie HTML/CSS oder JS ab jetzt komprimiert übertragen. Im nächsten Teil wird nun noch angeführt wie mittels DNS, Keepalive und der vermeidung von Redirects noch zusätzlich Ladezeit verkürzt werden kann.

Analog hierzu ist die Konfiguration unter Lighttpd, das “deflate” Modul ist vollständig unter http://redmine.lighttpd.net/projects/lighttpd/wiki/Mod_Deflate dokumentiert. Die Einrichtung ist hier denkbar einfach sofern Lighttpd mit Kompressionsunterstützung übersetzt wurde (sollte in allen Distributionspaketen Standard sein).

share save 171 16 Serie High Performance Websites   Teil 4: Weniger ist Mehr !

Weiterführende Artikel

5 Responses to “Serie High Performance Websites – Teil 4: Weniger ist Mehr !”


  • Einziger Nachteil von mod_deflate: der Content wird bei jedem Request neu komprimiert, was zu einer erheblichen Last auf dem Server führen kann.

    Wenn die Anzahl der zu komprimierenden Dateien eher übersichtlich ist, kann es sich mehr lohnen, diese parallel als komprimierte Datei vorzuhalten, und dann mit mod_headers und mod_rewrite zu arbeiten:

    ForceType text/javascript

    Header set Content-Encoding: gzip

    RewriteEngine On
    RewriteCond %{HTTP_USER_AGENT} !”.*Safari.*”
    RewriteCond %{HTTP:Accept-Encoding} gzip
    RewriteCond %{REQUEST_FILENAME}.gz -f
    RewriteRule (.*)\.js$ $1\.js.gz [L]
    ForceType text/javascript

  • Leider hat WordPress die spitzen Klammern zerschossen; hier nochmal ein Versuch:

    <FilesMatch “\.js.gz$”>
    ForceType text/javascript
    <IfModule mod_headers.c>
    Header set Content-Encoding: gzip
    </IfModule>
    </FilesMatch>
    <FilesMatch “\.js$”>
    RewriteEngine On
    RewriteCond %{HTTP_USER_AGENT} !”.*Safari.*”
    RewriteCond %{HTTP:Accept-Encoding} gzip
    RewriteCond %{REQUEST_FILENAME}.gz -f
    RewriteRule (.*)\.js$ $1\.js.gz [L]
    ForceType text/javascript
    </FilesMatch>

  • Guter Punkt, allerdings sollte (ohne das jetzt genauer zu prüfen) die fast gleiche Funktionalität doch auch eine Kombination aus mod_defalte und mod_(mem|disk)_cache hergeben oder ?

    Bei Lighttpd können komprimierte Inhalte ebenfalls gecached werden.

    Damit fällt die CPU Zeit nur einmalig ins Gewicht.

    Hier ein Link zu “Measuring the Performance Effects of mod_deflate in Apache 2.2″ – http://www.webperformanceinc.com/library/reports/moddeflate/

  • Als Lösung für diese Problem habe ich mir einen Nginx-Proxy gebastelt, der statische Daten (Bilder…) ausliefert und diese zusätzlich für 24 Stunden cacht, alle andern dynamischen Inhalte (php,cgi…) werden sofort an apache durch-gereicht. In meinem Beispiel laufen sowohl der Proxy als auch Apache auf einem Server.

    -> http://voku-online.de/comment-n238.html

    Zudem habe ich noch einen kleinen Blog-Eintag zum Thema “Webseiten beschleunigen” geschrieben. (mod_expires, mod_deflate, yuicompressor…)

    -> http://voku-online.de/comment-n153.html

  • Sehr hilfreich! Vielen Dank hierfür!

Leave a Reply