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

title_2016_06

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

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

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

Aktuelle Fragen

Welche Drucker sind Linux-mint kompatibel?
Johannes Nacke, 20.05.2016 07:32, 4 Antworten
Hallo Ihr Lieben, ich bitte um mitteilung welche Drucker Kompatibel sind mit Linux-Mint. LG Joh...
MS LifeCam HD-5000 an Debian
Kay Michael, 13.04.2016 22:55, 0 Antworten
Hallo, ich versuche die oben erwähnte Cam an einem Thin Client mit Debian zu betreiben. Linux...
Import von Evolution nach KMail erzeugt nur leere Ordner
Klaus-Christian Falkner, 06.04.2016 12:57, 3 Antworten
Hallo, da ich vor einiger Zeit von Ubuntu auf Kubuntu umgestiegen bin, würde ich gerne meine E...
Sophos lässt sich nicht unter Lubuntu installieren
Chrstina Turm, 30.03.2016 20:56, 3 Antworten
Hi Leute, habe mir vor paar Tagen auf ein Notebook, das ohne Linux ausgedient hätte, Linux dr...
Novell Client auf Raspbian
Chris Baum, 16.03.2016 15:13, 3 Antworten
Hallo Community, ich hätte eine Frage, und zwar geht es um folgendes: Ich möchte eine Datei...