AA_express_gui-yongnian_123rf_13179538.jpg

© Gui Yongnian, 123RF

Die Reaktionszeit von Webseiten optimieren (Teil 3)

Expressversand

,
Durchdachte Einstellungen beim Webserver und kleine Tricks beim Optimieren machen lahmen Webseiten Beine.

Workshop "Webseiten optimieren"

Teil 1: Einführung und Endbenutzer (Client) LU 06/2105, S. 92 http://www.linux-community.de/34587
Teil 2: Redakteur (Inhalt) LU 07/2105, S. 88 http://www.linux-community.de/34588

Als Administrator obliegt Ihnen die Verantwortung für die technischen Aspekte einer Internetseite. Abgesehen von der eingesetzten Hardware beinhaltet das die Konfiguration und den Betrieb des Webservers. Bei allen nachfolgend vorgestellten Aktionen besteht das primäre Ziel darin, die Anzahl der GET-Requests möglichst zu minimieren: Sie verursachen einen Großteil der Last. Somit verringern Sie einerseits die allgemeinen Unkosten in Bezug auf die Anfragen, andererseits die Last auf dem Webserver und erreichen damit in der Gesamtheit eine schnellere Reaktionszeit.

Verfallsdatum

Auf Wunsch ergänzt der Webserver die von ihm ausgelieferten Inhalte (Text und Bilder) mit einem Ablaufdatum beziehungsweise Zeitstempel zu deren Gültigkeit. Rein technisch betrachtet, sendet er in seiner Antwort sogenannte Cache Control Header mit, die entweder relativ zum letzten Zeitpunkt der Änderung der Datei wirken oder sich am letzten Zeitpunkt des Zugriffs orientieren.

Surfen Sie danach die Webseite an, überprüft der Webbrowser zunächst die Inhalte in seinem Zwischenspeicher (Cache). Liegen die Daten bereits lokal vor und ist das dazu hinterlegte Ablaufdatum noch nicht überschritten, nimmt der Browser die Daten direkt aus dem Cache und stellt sie dar. Das geht deutlich schneller, als die Daten erneut über das Netzwerk vom Server zu beziehen. Ist das Zeitlimit jedoch bereits abgelaufen oder lösen Sie ein Nachladen explizit aus (Reload), fordert der Browser die Inhalte erneut vom Server an und aktualisiert die Daten im Cache.

Die Voraussetzung für eine sinnvolle Nutzung stellt in diesem Zusammenhang eine korrekte Systemzeit auf den beteiligten Rechnern dar, was Sie beispielsweise über einen Abgleich via Network Time Protocol (NTP) erreichen. Bei nicht korrekt gesetzter Zeit bleiben die Seiten im Zwischenspeicher entweder zu lange oder zu kurz gespeichert.

Für den Webserver Apache steht für entsprechende Zeitstempel das Modul mod_expires bereit [3]. Sie finden es bei Debian und Ubuntu im Paket apache2-bin [4]. Die Konfiguration des Moduls erfolgt je nach Servertyp und Hoster in der Datei .htaccess oder in den statischen Virtual Hosts unter /etc/apache2/sites-enabled/vh-statics [5]. Die fünf Zeilen in Listing 1 sorgen dafür, dass ein Browser sowohl Bilder in gängigen Formaten als auch CSS-Dateien für einen Zeitraum von 30 Tagen nach dem Zugriff zwischenspeichert.

Nach dem Konfigurieren aktivieren Sie das Modul durch den Aufruf aus der ersten Zeile von Listing 2 und starten den Apache-Webserver neu (zweite Zeile). Verwenden Sie Nginx [6] anstelle von Apache und nutzen Sie eine Konfiguration analog zu Listing 3.

Listing 1

ExpiresByType image/jpg "access plus 30 days"
ExpiresByType image/gif "access plus 30 days"
ExpiresByType image/jpeg "access plus 30 days"
ExpiresByType image/png "access plus 30 days"
ExpiresByType text/css "access plus 1 month"

Listing 2

# a2enmod expires
# service apache2 restart

Listing 3

location ~* \.(png|jpg|jpeg|gif)$ {
  expires 30d;
}

Ob für eine Webseite eine zeitliche Begrenzung eingestellt ist, finden Sie mit dem Programm Curl [7] und der Option -I (Langform --head) auf der Kommandozeile heraus. Ein entsprechender Aufruf liefert nicht die gesamte Webseite, sondern nur die Kopfzeilen (Header). Listing 4 zeigt das Ergebnis für die Webseite des Debian-Projekts. Die Zeilen 12 und 13 geben darüber Auskunft, dass für die Startseite ein Verfallsdatum gilt.

Listing 4

$ curl --head http://www.debian.org
HTTP/1.1 200 OK
Date: Tue, 14 Jul 2015 16:59:22 GMT
Server: Apache
Content-Location: index.en.html
Vary: negotiate,accept-language,Accept-Encoding
TCN: choice
Last-Modified: Sat, 11 Jul 2015 23:34:58 GMT
ETag: "3a4e-51aa1efc97682"
Accept-Ranges: bytes
Content-Length: 14926
Cache-Control: max-age=86400
Expires: Wed, 15 Jul 2015 16:59:22 GMT
X-Clacks-Overhead: GNU Terry Pratchett
Content-Type: text/html
Content-Language: en

Statisch und dynamisch

Die Webserver Apache und Nginx liefern Inhalte an und für sich bereits zügig aus. Nimmt die Menge der Anfragen jedoch zu, kommt auch serverseitig das Thema Caching von Inhalten ins Spiel. Dabei unterscheiden sich die Varianten in Bezug auf den Speicherort, wobei man zwischen dem Disk Cache und dem Memory Cache unterscheidet. Während die erste Variante die übermittelten Inhalte auf einem Datenträger puffert, nutzt die zweite Variante das RAM als Zwischenspeicher. Ein Disk Cache arbeitet naturgemäß langsamer als ein Memory Cache, bietet dafür aber mehr Kapazität.

Beide Varianten zielen auf unterschiedliche Einsatzbereiche ab. Verwenden Sie einen Disk Cache in Kombination mit statischen Inhalten aus lokalen Quellen, hat das lediglich einen begrenzten Effekt. Aufgrund der hohen Leistungsfähigkeit der Datenträger macht es heutzutage keinen großen Unterschied mehr, von welcher Datei auf der lokalen Festplatte der Inhalt letztlich stammt. Beziehen Sie jedoch Daten von externen Quellen, etwa über AFS, NFS, Samba (SMB) oder von einem NAS, ist der Disk Cache aufgrund der Latenzen im Netzwerk oft sinnvoll.

Etwas anders sieht es bei identischen Inhalten aus, die der Server jeweils dynamisch erzeugt. Dazu zählt unter anderem die Kombination aus Skripten und Datenbankzugriffen, die häufig bei CM-Systemen wie Wordpress [8], Drupal [9], Typo3 [10] oder Contao [11] im Hintergrund ablaufen. Sowohl ein Disk Cache als auch ein Memory Cache bringen hier einen klaren Geschwindigkeitsvorteil.

Um das Caching mit Apache zu verwenden, benötigen Sie das Modul mod_cache [12]. Fürs Disk-Caching kommt bei Apache 2.2 das Modul mod_disk_cache hinzu beziehungsweise mod_cache_disk ab Apache 2.4. Das Caching im RAM übernehmen mod_mem_cache (Apache 2.2) oder mod_file_cache (Apache 2.4).

Sie aktivieren die Module für einen Disk Cache durch den Aufruf aus Listing 5 und starten anschließend den Apache-Webserver neu. Das Beispiel bezieht sich auf Apache 2.4. Ausführlichere Informationen zur Konfiguration dazu entnehmen Sie der Dokumentation [13]. Benötigen Sie die Schritte aus Listing 5 häufiger, dann packen Sie die Abfolge am besten in ein Shell-Skript, um noch ein wenig Zeit zu sparen.

Listing 5

# a2enmod cache
# a2enmod mod_cache_disk
# service apache2 restart

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 6 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Kommentare

Infos zur Publikation

LU 09/2016: Ciao, Windows!

Digitale Ausgabe: Preis € 5,99
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Aktuelle Fragen

KWord Quiz
Carl Garbe, 30.08.2016 16:19, 0 Antworten
KWord Quiz lässt sich bei mir (nach einem update auf Ubuntu 16.04 LTS) nicht mehr speichern, kann...
NOKIA N900 einziges Linux-Smartphone? Kein Support mehr
Wimpy *, 28.08.2016 11:09, 1 Antworten
Ich habe seit vielen Jahren ein Nokia N900 mit Maemo-Linux. Es funktioniert einwandfrei, aber ich...
Scannen nicht möglich
Werner Hahn, 19.08.2016 22:33, 3 Antworten
Laptop DELL Latitude E6510 mit Ubuntu 16,04, Canon Pixma MG5450. Das Drucken funktioniert, Scann...
Wie kann man das berichtigen
Udo Muelle, 17.07.2016 20:39, 1 Antworten
Fehlschlag beim Holen von http://extra.linuxmint.com/dists/rosa/main/binary-i386/Packages Hash-S...
Installation Genimotion
Horst Müller, 15.07.2016 17:00, 1 Antworten
Hallo, ich kann Genimotion nicht installieren. Folgende Fehlermeldung habe ich beim Aufruf erh...