Mai 6, 2012

Webwork: Wie der Cache einem zu schaffen macht

Wenn man als Webentwickler / Frontendentwickler tätig ist, hat man ja viele verschiedene Hürden zu meistern. Angefangen mit der Crossbrowser Kompatibilität bis hin zur Usability Prüfung.

Eines der täglichen Probleme ist der Cache. Es gibt einen Haufen unterschiedlicher Cache-Systeme die dem Endbenutzer das Surfen schöner und schneller machen. Nicht alle davon kann man so einfach umgehen, wie den Browser Cache. Diese Funktion ist in jedem Browser vorhanden und erstellt lokale Kopien von Webseiten. Wenn man dann eine Seite erneut aufruft, lädt der Browser die Seite nicht aus dem Netz, sondern sondern nimmt die Kopie aus dem Browser Cache.

Als Endbenutzer ist das sehr schön, denn spart man sich das herunterladen der Seite und ruft diese entsprechend schneller auf. Was für den Benutzer gut ist, ist für den Entwickler nervtötend. So kann es einem passieren, dass die vielen tollen CSS Änderungen gar nicht angezeigt werden, weil die Dateien nicht neu geladen wurden, sondern aus dem Cache kommen. Wenn ich also an einer Seite arbeite, lösche ich vor jedem Seiten Aufruf den Cache oder schalte den Cache von vornherein ab.

Neulich bin ich bei der Arbeit aber auf einen neuen Cache gestoßen. Bis jetzt hatte ich damit nicht viel zu tun gehabt, denn er betrifft nur die (mobilen) HTML5-Anwendungen und entsprechende HTML5 Seiten. Im AppCache werden alle Dateien abgespeichert, die man in der “Manifest”-Datei angibt. So kann man den mobilen Geräten alle notwendigen Dateien zur kompletten Offline Nutzung zur Verfügung stellen, wodurch man als Nutzer nicht immer auf Internet angewiesen ist.

Das problematische dabei ist, dass der Chrome beim Leeren des Browser Caches dem AppCache keine Beachtung schenkt. Wenn ich also den Cache leere und die HTML5 Seite mit manifest-Datei aufrufe, bekomme ich immer noch eine Seite aus dem Cache. Diesem Problem auf die schliche zu kommen hat mich neulich wirklich ein wenig Zeit gekostet… wenn ich also eine manifest-gecachete Seite testen will, rufe ich

chrome://appcache-internals/

auf und habe erst mal eine übersicht über alle gecacheten Seiten. Dort kann ich auch den AppCache löschen. Ein wenig umständlich, denn andere Brwoser löschen diesen Cache auch mit, wenn ich den Browser Cache lösche.

Noch mehr Informationen zum AppCache habe ich übrigens hier gefunden: http://appcachefacts.info

So, wollte heute einfach mal was für die Webdevelopement Kategorie schreiben, weil ich da schon sehr lange nichts mehr veröffentlicht habe… ;)

Kkthxbb