installation.de

Ein neues WordPress-Weblog

Archive for the ‘ Web-/Tipps&Tricks ’ Category

Vor kurzem habe ich einen Webserver zur komprimierten Inhaltsausgabe im gzip Format flott gemacht.
Die Folgen sind: Website ist schlanker –> Website wird schneller runtergeladen –> super :)

Ausgangslage ist ein Windows 2003 Server mit Apache 2.2.

Das mod_deflate wird standardmässig beim Apache 2.x mitgeliefert und muss in der http.conf nur aktiviert werden.
Also so sollte es sein:

LoadModule deflate_module modules/mod_deflate.so

Zusätzlich benötigt man dann noch folgendes in der http.conf

<IfModule mod_deflate>
  AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/x-javascript application/x-httpd-php application/rss+xml application/atom_xml text/javascript
  BrowserMatch ^Mozilla/4 gzip-only-text/html
  BrowserMatch ^Mozilla/4\.0[678] no-gzip
  BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
 
  deflate.enabled = "enable" 
  deflate.compression-level = 9
  deflate.mem-level = 9
  deflate.window-size = 15
  # deflate.bzip2 only in patch for 1.4.x
  deflate.bzip2 = "enable" 
  # deflate.allowed_encodings only in 1.5.x
  deflate.allowed_encodings = ( "bzip2", "gzip", "deflate" )
  deflate.min-compress-size = 200
  #deflate.sync-flush = "enable" 
  #deflate.output-buffer-size = 8192
  deflate.work-block-size = 512
  deflate.mimetypes = ("text/html", "text/plain", "text/css", "text/javascript", "application/javascript", "application/x-javascript", "application/x-httpd-php", "text/xml")
  #deflate.debug = "enable" 
</IfModule>

Nun werden werden die Inhalte die den oben genannten Typen und Größe entsprechen komprimiert ausgegeben. Da ältere Browser gzip nicht entschlüsseln können ist zusätzlich eine Browserweiche am werk.

Genaue Infos zu den Einstellmöglichkeiten gibt es bei
http://redmine.lighttpd.net/projects/lighttpd/wiki/Mod_Deflate
und bei
http://blog.netways.de/2009/04/21/serie-high-performance-websites-teil-4-komprimierung-der-seiten/

Was kann man alles verbessen um die eigene Website schneller zu machen beziehungsweise den Webserver leistungsfähiger zu machen?
Was folgt sind ein paar sehr nützliche Plugins und Tipps von Google und Yahoo.

Performance Rules von Yahoo Developer –> http://developer.yahoo.com/performance/rules.html
Performance Rules von Google Code –> http://code.google.com/intl/de-DE/speed/page-speed/docs/rules_intro.html

Beides ist recht umfangreich und auf englisch. Ein paar der behandelten Punkte werde ich deshalb auf Deutsch etwas zusammenfassend zu einem späteren Zeitpunkt erläutern. Zunächst aber kommen wir zu den Add On’s die auf die Performance Rules aufbauen. Wer nämlich keine Lust hat sich die ganzen Performance Rules durchzulesen ist mit den Add On’s letztlich schneller am Ziel:

Es gibt 2 Firefox Add On’s welche die Website analysiert und untersucht uns anschließend sagt was man gut bzw. schlecht gelöst hat. Zusätzlich wird über weiterführende Texte (auf englisch) gut erklärt wie man es besser macht bzw. die Fehler behebt. Beide Add On’s sind ein zusätzlicher Aufsatz für das benötigte und sehr bekannte Add On “Firebug”. Falls sie das nicht kennen wird es höchste Zeit: https://addons.mozilla.org/de/firefox/addon/1843

1.) YSlow (aktuelle Version 2.0.0b3) Entwicker ist Yahoo! https://addons.mozilla.org/de/firefox/addon/5369
Analyse, Tipps und weiterführende Hilfen(http://developer.yahoo.com/) kommen von keinen geringeren als von der Yahoo! inc.

2.) Page-Speed Entwicker ist Google! http://code.google.com/intl/de-DE/speed/page-speed/
Analysiert und testet prinzipiell die gleichen Punkte wie YSlow.
Ich persönlich nutzte alle der genannten Add On’s.

Wer kennt das nicht, Umlaute und Sonderzeichen werden falsch angezeigt obwohl man die Standards eingetragen hat:

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
...

Nun kann man auch ein Default-Charset für diverse Dateien schon in der Apache-Conf oder in einer seperaten .htaccess angeben. Dieses zieht aber meistens nur dann wenn man sonst kaum angaben gemacht hat.

<files "*.*">
AddDefaultCharset iso-8859-1
</files>

Wer mit PHP arbeitet und immernoch Probleme hat der sollte einmal diese Zeile direkt zu Begin der Seite (or dieser Funktion kann keine andere Ausgabe gemacht werden) einfügen!

header('Content-Type: text/html; charset=iso-8859-1');

Manchmal bekommt man Text, z.B. aus der Datenbank oder aus einer anderen Datei, welcher in UTF-8 geschrieben wurde und man ihn nun aber in einer ISO-8859-1 Seite ausgeben möchte. In diesem Fall kann man den Text konvertieren. Dazu sollte man sich einmal diese Funktionen genauer anschauen.

echo iconv("UTF-8","ISO-8859-1","Dies ist ein Test üöä."); 
// ODER
echo utf8_decode("Dies ist ein Test üöä.")

Zu iconv gibt es eine ganze Reihe von Funktionen und zu utf8_decode gibt es auch das gegenstück utf8_encode.

Viel Erfolg!