Boehrsi.de V7 - Caching mit mod_expires
Nachdem es im letzten Teil der Serie um die Minimierung von HTTP Requests ging, geht es heute mit Caching weiter. Denn um die Menge an Daten die geladen werden müssen zu reduzieren, ist es natürlich super sie einfach gar nichts an den Nutzer zu übertragen. Dies ist in manchen Fällen tatsächlich möglich, denn besucht ihr eine Seite häufiger, habt ihr einfach schon sehr viele der zu übertragenden Daten auf eurem PC. Dies betrifft z.B. die Bilder des eigentlichen Homepage Designs, Style Dateien und andere Inhalte die sich vielleicht nicht so häufig ändern. Doch was darf für welchen Zeitraum aus dem Cache geladen werden ohne das es vielleicht zu Problemen kommt? An dieser Frage scheiden sich die Geister und vor allem hängt dies auch sehr von der eigentlichen Homepage ab. Ein kleiner Hinweis noch, es geht nicht um das Caching innerhalb des Servers open_in_new, sondern um die Caching Funktionen vom Server die dem Nutzer einen unnötigen Datenaustausch ersparen.
Mein Use-Case: Ich persönlich nutze eine relativ schlichte Homepage, im Bezug auf das Design und sofern ich sie nicht gerade neu erstelle ändert sich dort auch nicht viel. Aus diesem Grund kann ich diverse Inhalte recht lange im Cache vorhalten, ohne auf Probleme zu stoßen. Lediglich bei Bildern die ich in meiner Galerie platziere und bei Änderungen direkt ersetze, kommt es durch Caching hier und da zu Problemen, doch diese sind eher minimal.
Meine Umsetzung: Ich nutze das mod_expires Modul open_in_new für meinen Apache Webserver, denn dieses erfüllt den Zweck sehr gut und bleibt dabei relativ gut konfigurierbar. Es gibt noch einige Alternativen, wie z.B. die direkte Filterung basierend auf Dateinamen via FilesMatch open_in_new, doch diese sagt mir nicht so zu. Um nun die korrekten Werte zu finden kann man herum probieren oder das Netz durchstöbern und dabei bin ich auf die .htaccess Datei des html5-boilerplate Projekts gestoßen, welche etwas weiter unten im Dokument sehr viele gute Einstellungen parat hat. Diese habe ich als Basis genommen und erweitert und angepasst. Sobald man die Werte hat geht es an die Einbindung. Diese erfolgt entweder pro Ordner in einer dort platzierten .htaccess Datei oder aber in einer globalen Konfigurationsdatei. Ob dies die vhost.conf oder aber eine andere Apache Konfigurationsdatei ist (z.B. httpd.conf) hängt von der Struktur und den Management Tools eures Servers ab. Wichtig ist aber das ihr neben der eigentlichen Konfiguration auch das Modul ladet. Dies kann über einen Eintrag in einer der besagten Konfigurationsdateien erfolgen (LoadModule expire_module modules/mod_expire.so) oder z.B. über ein Konfigurationstool wie Plesk open_in_new. Hier kann ich leider nur etwas ungenaue Angaben machen, denn es gibt leider sehr viele Wege um ans Ziel zu kommen. Ich persönlich habe die Module über Plesk aktiviert und binde die jeweiligen Konfigurationen pro virtuellem Host in der vhost.conf ein. Besondere Ausnahmen pro Ordner implementiere ich durch Nutzung einer .htaccess Datei im jeweiligen Ordner.