2012-03-27 5 views
0

Gibt es eine Möglichkeit, einen appweiten In-Memory-Cache für eine HTML5-Webanwendung zu implementieren?Wie implementiert man einen App-weiten In-Memory-Cache in HTML5?

Gibt es eine HTML5-Funktion für den speicherinternen Datencache? Ich spreche nicht über den Browser-Cache, der nur Serverantworten speichert. Ich brauche effizientere Objekte im Cache.

Eine Möglichkeit, die ich mir vorstellen kann, besteht darin, ein globales Singleton-JavaScript-Objekt zu implementieren, das einmal für die Lebensdauer der App erstellt wird, damit es Caching und Daten abrufen kann. Wenn dies der einzige Weg ist, wie kann ein solches Singleton-Objekt erzeugt werden?

+0

Was mit falsch [ 'localStorage'] (https://developer.mozilla.org/en/DOM/Storage#localStorage)? –

+0

Viele HTML5-Webanwendungen sind so konzipiert, dass sie nur eine Seite darstellen, die im Verlauf der Anwendung mit Inhalten aktualisiert wird. – Pointy

+0

Ist 'localStorage' auf der Festplatte gespeichert oder ist es im Speicher? Funktioniert es für eine Gesamtgröße von etwa 1 MB für mobile Browser? Ich konnte diese Informationen nicht im Mozilla-Link finden. – aligf

Antwort

5

Hier ist ein wirklich einfach Singleton ohne zu viel Durchsetzung. Es könnte auf eine wirklich geschützte Weise geschehen, wo der Cache-Konstruktor für die Außenwelt nicht wirklich zugänglich ist, sagen Sie mir, wenn Sie interessiert sind.

function Cache() { 
    if ("instance" in arguments.callee) 
     throw "new instance is not desired"; 
    var simpleCache = {}; 

    this.set = function(key, data) { 
     simpleCache[key] = data; 
    }; 

    this.get = function(key) { 
     return simpleCache[key]; 
    }; 
}; 

Object.defineProperty(Cache, "instance", { value: new Cache(), writable: false }); 

Nun rufen Sie wie man es erwarten würde:

Cache.instance.set("key1", { a: "field1Value", b:12 }); 
Cache.instance.set("key2", new XMLHttpReuquest());