- Serie High Performance Websites – Teil 1: Vorarbeiten
- Serie High Performance Websites – Teil 2: Minimieren von HTTP-Requests
- Serie High Performance Websites – Teil 3: Cachen erlaubt !
- Serie High Performance Websites – Teil 4: Weniger ist Mehr !
- Serie High Performance Websites – Teil 5: letztes Feintuning
- Serie High Performance Websites – Zusammenfassung
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).









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:
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!