Application CacheDer Application Cache ist ein Standard, der einen besonderen Browser-Cache für Webseiten, vor allem Webanwendungen zur Verfügung stellt. Der Standard wurde mit HTML5 eingeführt und soll auf einfache Weise ermöglichen, dass Seiten auch offline genutzt werden können. In der Praxis zeigten sich allerdings zahlreiche Schwächen, sodass der Standard inzwischen als hinfällig gilt.[1] FunktionsweiseDer Application Cache ist ein Speicherbereich, in dem der Webbrowser bestimmte Ressourcen speichert, die von einer Seite benötigt werden, damit diese beim nächsten Besuch sofort zur Verfügung stehen, auch wenn zu diesem Zeitpunkt keine Internetverbindung besteht. Er funktioniert damit ähnlich wie der gewöhnliche Browser-Cache und wird parallel zu diesem eingesetzt. Welche Ressourcen gespeichert werden sollen, wird mit dem Cache Manifest bestimmt. Das Manifest gibt außerdem an, ob fehlende Ressourcen über das Internet heruntergeladen werden sollen oder ob stattdessen ein Fallback verwendet werden soll. Um ein Cache Manifest zu verwenden, wird dessen URL im Zudem gibt es eine JavaScript-Schnittstelle, über die die Seite mittels Events verfolgen kann, in welchem Zustand sich der Cache befindet. Cache ManifestDas Cache Manifest ist eine einfache Textdatei mit der Dateiendung Alle als explizite Cache-Einträge gelisteten URLs sowie die Einträge, die implizit dadurch gecachet werden, dass sie das Manifest einbinden, werden in den Cache aufgenommen. Fallback-Einträge bestehen aus einem URL-Bereich und der Angabe einer Fallback-URL. Kann eine Ressourcen aus einem dort gelisteten Bereich nicht geladen werden, so wird stattdessen der Fallback verwendet. Netzwerk-Einträge geben schließlich an, welche Ressourcen bei Verwendung des Application Caches trotzdem über das Internet geladen werden sollen. Das Standard-Verhalten ist, dass alle Ressourcen, die nicht im Manifest verzeichnet sind, automatisch fehlschlagen, selbst wenn eine Internetverbindung besteht. Dieses Verhalten kann aber über einen Netzwerk-Eintrag BeispielAls Beispiel soll eine Seite dienen, die es dem Benutzer ermöglicht, sich durch mehrere Bilder hindurchzublättern. Diese Bilder sollen dabei nicht alle von Anfang an sichtbar sein, sondern dynamisch nachgeladen werden. Dazu wird eine CSS-Stildatei Die HTML-Datei könnte (wenn das Skript für den kompletten Inhalt verantwortlich ist) folgendermaßen aussehen: <!DOCTYPE html>
<html manifest="cache.appcache">
<head>
<title>Bilderbuch</title>
<link rel="stylesheet" href="style.css">
<script src="script.js"></script>
</head>
<body>
</body>
</html>
Die in der zweiten Zeile angegebene Cache-Datei könnte den folgenden Inhalt haben: CACHE MANIFEST #v1 script.js style.css bild1.jpg bild2.jpg bild3.jpg bild4.jpg Die HTML-Datei wird implizit gecachet, da sie das Manifest einbindet, dazu kommen die CSS- und die JS-Datei sowie die vier Bilder. Diese werden geladen, obwohl sie zu diesem Zeitpunkt noch nicht benötigt werden, da sie nicht direkt in der HTML-Datei referenziert werden. Wird eine der Dateien aktualisiert, so muss die Manifest-Datei geändert werden. Sofern die Liste der Dateien gleich geblieben ist, bietet es sich an, einen Kommentar zu modifizieren und so eine neue Version zu erzeugen. Dazu dient die zweite Zeile im Manifest-Beispiel. Sicherheit![]() Der Application Cache ermöglicht es, Benutzer ähnlich wie mit Cookies zu verfolgen. Zudem besteht die Möglichkeit, sehr viel Speicherplatz zu verbrauchen. Damit bösartige Seiten dies nicht ausnutzen, fragen die meisten Browser beim Benutzer nach, bevor sie erstmals für eine Seite einen Application Cache anlegen. Je nach Browser gibt es auch unterschiedliche Möglichkeiten den Cache wieder zu entfernen.[2] BrowserunterstützungAlle aktuellen Browser unterstützen Application Cache, Mozilla Firefox ab Version 3.5, der Internet Explorer ab Version 10, Google Chrome ab Version 4. In Android besteht ab Version 2.1 Unterstützung im Standardbrowser.[3] Firefox zeigt ab der Version 44 eine Warnung in der Browserkonsole an, wenn Application Cache eingesetzt wird, um Programmierer darauf aufmerksam zu machen, dass es sich um eine veraltete Technologie handelt.[4] ProblemeIn der Praxis zeigten sich zahlreiche Probleme mit dem Application Cache:[5]
In einigen Fällen weichen Programmierer daher auf andere Technologien aus, etwa Web Storage. Als Reaktion auf diese Probleme wurde der Service-Worker-Standard entworfen,[7] der allerdings deutlich komplexer ist und noch nicht in allen Browsern implementiert ist. Seit 2015[8] wird der Application Cache von der WHATWG als deprecated eingestuft.[1] Setzt eine Seite sowohl Service Worker als auch Application Cache ein, so ignorieren moderne Browser den Application Cache. Einzelnachweise
Weblinks
|