kaffeeringe.de

.htaccess-Tuning: Mehr Performance dank Browser-Caching

Ich weiß gar nicht, war­um ich mi­ch dar­auf ver­las­sen ha­be, dass si­ch mo­der­ne Browser schon kor­rekt um das Caching von Internetseiten küm­mern. Immer wie­der wird ei­nem ver­si­chert, dass die hun­der­te von Kilobyte JavaScript für Bibliotheken wie Prototype oder jQue­ry nur ein­mal ge­la­den und dann aus dem Cache ver­wen­det wer­den. Das ist nicht au­to­ma­ti­sch so. Da muss man et­was für tun!

Auf das Thema kam ich, als nach dem Relaunch kaffeeringe.de echt lang­sam ge­wor­den ist – wo­bei es nicht an den Rendering-Zeiten liegt. Die lie­gen au­ßer auf der Blog-Startseite über­all bei ei­ner hal­ben Sekunde. Auf der Startseite wer­den zur Zeit no­ch je­des­mal fri­sch die Infos von Twitter und LastFM ge­zo­gen. Die Anfragen ti­men aber nach ei­ner Sekunde out. Diese Blöcke kön­nen das System al­so ma­xi­mal 2 Sekunden auf­hal­ten. Trotzdem hat es manch­mal ewig ge­dau­ert, bis die Seite an­ge­zeigt wur­de.

Mit YSlow analysieren

Ein Forenpost hat mi­ch dann auf YSlow ge­bracht. YSlow ist ein frei­es Tool von Yahoo, das als Plugin für Firebug, die Performance von Internetseiten ana­ly­siert. Dort ha­be ich er­st ein­mal fest­ge­stellt, dass ein CSS nicht kor­rekt ein­ge­bun­den war und ein Fehler 404 pro Seitenaufruf be­schleu­nigt den Aufbau nicht ge­ra­de.

Yahoo hat üb­ri­gens um­fang­rei­che Informationen zum Thema Performance zur Verfügung ge­stellt, in de­nen ich in nächs­ter Zeit no­ch mehr stö­bern wer­de.

Expires vs. Header

Und dann war da das Thema Caching: YSlow sag­te mir, dass für kei­ne der ge­la­de­nen Komponenten ein Expires-Header ge­setzt war. Der Browser weiß al­so nicht, wie lan­ge er Dateien zwi­schen­spei­chern darf – bei CSS und JavaScript muss der die Infos ja wäh­rend ei­ner Session auf kei­nen Fall neu la­den und auch Bilder än­dern si­ch sel­ten. Nur die HTML bzw PHP Seiten auf dy­na­mi­schen Sites soll­ten stets fri­sch sein.

Zunächst er­fuhr ich, dass beim Apache Webserver zwei Module für das set­zen der Header in Frage kom­men. Das ei­ne heisst Header, das an­de­re Expires. Welches da­von auf dem ei­ge­nen Server ak­tiv ist, kann man zum Beispiel mit ph­pin­fo() her­aus­be­kom­men. Man kann die ent­spre­chen­den Anweisungen aber auch ein­fach bei­de in die .htac­cess schrei­ben und mit if­mo­du­le ab­si­chern – so kommt es nicht zu ei­nem Server Error 500, weil die Direktiven nicht ver­ar­bei­tet wer­den konn­ten.

Wie das ge­n­au aus­sieht, kann man si­ch auf askApache.com sehr gut an­schau­en. Die Beispiele von dort kann man si­ch ein­fach in die htac­cess ko­pie­ren.

Wesentlich flotter

So hat ein für ver­al­tet ge­hal­te­nes Thema für mi­ch wie­der ho­he Aktualität er­hal­ten. Nach mei­nem Eindruck lädt die Seite jetzt we­sent­li­ch schnel­ler – wenn sie auch no­ch ein we­nig stockt. Da muss ich no­ch wei­ter schau­en. Vor al­lem muss ich für die Twitter- und die LastFM-Geschichte no­ch ein in­ter­nes Caching ein­bau­en. Das reicht, wenn die Infos al­le paar Minuten ak­tua­li­siert wer­den.

Links

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Möchtest Du benachrichtigt werden, wenn Dir hier jemand antwortet?