Daten
29.03.2012, 00:00 Uhr
Webanwendungen speichern bis zu 2,2 GB - ohne, dass der User es mitbekommt
Der belgische Softwareentwickler Jef Claes experimentiert gerne mit neuen Techniken und berichtet darüber in seinem Blog. Bei seinen jüngsten Versuchen zum Cache-Kontingent des HTML5 Offline Application Cache stieß er auf einen unerwarteten Umstand: Eine Web-App kann bis zu 2,2 Gigabyte an Daten im Hintergrund herunterladen – ohne, dass der User etwas davon mitbekommt.
Eigentlich wollte Claes herausfinden, wie sich Browser und Cache in Grenzfällen verhalten. Dazu verwendete er einen kurzen Codeabschnitt, um hunderte von sieben Megabyte großen PDF-Dateien zum Cache hinzuzufügen.
Die ursprünglich geplanten 1000 Dateien waren zwar nicht möglich (dies produzierte eine Fehlermeldung, da das Cache-Kontingent überschritten wurde), nach einigem Hin und Her traf er jedoch den optimalen Wert und konnte 300 PDF-Dateien zum Cache hinzufügen.
Ein Blick in chrome :/ / AppCache-Interna / machte klar: satte 2,2 GB waren nun im Cache, und das für eine einzige Anwendung. Bezeichnenderweise informiert weder Chrome, noch irgendein anderer Browser den Anwender über die Menge der herunter geladenen Daten. Eigentlich sollte man erwarten können, dass der Browser den User um Erlaubnis bittet oder wenigstens warnt - Fehlanzeige!
Erschwerend kommt noch hinzu, dass andere Anwendungen nun keine Daten mehr in den Cache laden können, da das Kontingent sonst überschritten würde… nach dem Motto „Wer zuerst kommt, mahlt zuerst!“. Zwar lässt sich das Szenario umgehen, indem man die applicationCache API verwendet, um über Cache-Fehlermeldungen informiert zu werden und den Cache dann per Hand zu bereinigen - das ist allerdings nicht nur umständlich, sondern auch wenig elegant und dürfte wohl in Zukunft auch noch für einigen Frust sorgen.
Sollte der Browser hier nicht eine praktikablere Lösung bieten? Wir haben dazu diesem Thema eine Diskussion auf codekicker.de gestartet und würden uns über eine rege Beteiligung freuen. Lassen Sie uns Ihre Meinung wissen!