2010-12-06 9 views
5

Ich möchte localStorage verwenden, um einige JS- und CSS-Dateien in einer Webanwendung zu "cachen", die hauptsächlich auf mobilen Geräten verwendet wird (z. B. Bandbreitenbeschränkungen). Ich denke, es wäre so etwas wie dies funktionieren:Speichern Sie ganze Dateien mit LocalStorage

  1. die Seite geladen wird mit einem kleinen setup.js enthält Code, der localStorage überprüft, ob bigScriptFile.js zuvor gespeichert wurde.
    1. Wenn es nicht gespeichert ist, wird bigScriptFile.js heruntergeladen und für den nächsten Besuch gespeichert.
    2. Wenn es gespeichert wurde, dann bigScriptFiles.js wird gelesen von localStorage und geladen/ausgeführt werden, als ob es wie eine normale Datei heruntergeladen wurde (dh <script src="http://example.com/bigScriptFile.js"></script>)

Was bin ich nicht sicher, wie man Do ist Schritt 1.1 - Speichern der JS-Datei. (Ich weiß, dass ich nur speichern Strings in localStorage und ich weiß, wie JSON.stringify() zu verwenden.)

Sicherlich ist es nicht so einfach wie mit escape():
localStorage.setItem('bigScriptFile', escape('myJScode')) zu speichern und
unescape(localStorage.getItem['bigScriptFile']) beim Abrufen

Auch wenn es so einfach ist, wie verwende ich JS, um den Inhalt von bigScriptFile.js als Zeichenfolge abzurufen? Vielleicht indem Sie einen Ajax-Aufruf an ein PHP-Skript machen, das den Inhalt zurückgibt?

Antwort

11

Sie sollten lieber die richtigen Cache-Header auf JS-Dateien oder schauen Sie sich die HTML5 cache manifest.

W3C specification.

+0

zu tun gedenke, wenn ich es richtig verstehe, das Manifest steuert nur Dateien im Browser-Cache. Wenn der Cache gelöscht wird, müssen die Dateien erneut heruntergeladen werden. Da diese App hauptsächlich auf iOS-Geräten ausgeführt werden soll, auf denen unter anderem geöffnete Seiten in Safari manchmal gelöscht werden, um Speicherplatz freizugeben, suche ich nach etwas Dauerhafterem. Ich weiß, das bedeutet, ich brauche einen Weg, um zu überprüfen, ob die 'localStorage'-Version veraltet ist (und wenn ja, absichtlich herunterladen und speichern Sie die neue Version), aber das sollte nicht zu schwer sein. Mir geht es mehr darum, wie man eine ganze JS-Datei als String zuverlässig speichert. – craigpatik

+1

Nein, die Dateien im Cache-Manifest werden für die Offline-/spätere Verwendung gespeichert. Sie können den Browser schließen, und die einzige Datei, die erneut heruntergeladen wird, ist die Cache-Manifestdatei. Ich behalte das Recht, dass ich nicht weiß, wie dies in Safari zu IOS –

+0

implementiert wird Das Cache-Manifest ist für Offline-Webapps bestimmt - wenn das Manifest geändert wird, dann muss der Browser alle Ressourcen validieren. Solange Ihr Manifest nicht geändert wird, werden alle Dateien am Leben erhalten, und Ihre Site funktioniert auch, wenn der Browser keine Verbindung zum Internet herstellen kann. – olliej

Verwandte Themen