438 Stimmen

Wann laufen Objekte im lokalen HTML5-Speicher ab?

Wie lange werden die Daten gespeichert in localStorage (als Teil der DOM-Speicherung in HTML5) verfügbar? Kann ich eine Verfallszeit für die Daten festlegen, die ich in den lokalen Speicher lege?

8voto

Jay Chauhan Punkte 266

Versuchen Sie es hiermit.

var hours = 24; // Reset when storage is more than 24hours
var now = Date.now();
var setupTime = localStorage.getItem('setupTime');
if (setupTime == null) {
     localStorage.setItem('setupTime', now)
} else if (now - setupTime > hours*60*60*1000) {
    localStorage.clear()
    localStorage.setItem('setupTime', now);
}

6voto

Ronen Ness Punkte 8791

Wenn jemand noch auf der Suche nach einer schnellen Lösung und wollen nicht, dass Abhängigkeiten wie jquery usw. Ich schrieb eine Mini-Lib, die Verfall zu lokalen / Session / benutzerdefinierte Speicherung hinzufügen, können Sie es mit Quelle hier finden:

https://github.com/RonenNess/ExpiredStorage

5voto

Amit Punkte 81

Wenn jemand das jStorage Plugin von jQuery benutzt, kann er den Ablauf mit der setTTL Funktion hinzufügen, wenn das jStorage Plugin

$.jStorage.set('myLocalVar', "some value");
$.jStorage.setTTL("myLocalVar", 24*60*60*1000); // 24 Hr.

4voto

a55 Punkte 268

Javascript localStorage keine Optionen zur Einstellung der Ablaufzeit haben

Dann verwende ich diese Funktionen, um Kontrollstützen , Satz y Siehe

function ls_support(){
    return "localStorage" in window&&window["localStorage"]!==null;
}

function lsset(key,val,exp){
    if(ls_support()){
        if(!exp) exp=600;// = 10 minutes Default
        localStorage[key]=
            JSON.stringify({
                "val":val,
                "exp":~~((new Date()).getTime()/1000)+exp
            });
    }
}

function lsget(key){
    if(ls_support()){
        str=localStorage[key];
        if("undefined"!=typeof(str)&&str.length){
            try{// is json or not
                json=JSON.parse(str);
            }catch(e){// if variable not set via lsset func
                //json.exp=false;// will return null
                return str;// will return original variable
            }
            if(json.exp){// variable setted via lsset func
                if(~~((new Date()).getTime()/1000)>json.exp){// expired
                    delete localStorage[key];
                }else{
                    return json.val;
                }
            }
        }
    }
    return null;
}

Und es scheint gut zu funktionieren:

get and set localstorage in pure javascript

2voto

JsAndDotNet Punkte 14904

Zum Nutzen der Suchenden:

Wie Fernando wollte ich nicht eine Menge json hinzufügen, wenn die gespeicherten Werte einfach waren. Ich brauchte nur einige UI-Interaktion zu verfolgen und halten die Daten relevant (z. B. wie ein Benutzer eine E-Commerce-Website vor der Kasse verwendet).

Dies wird nicht alle Kriterien erfüllen, aber es wird hoffentlich ein schneller Copy+Paste-Einstieg für jemanden sein und das Hinzufügen einer weiteren Lib ersparen.

HINWEIS: Dies wäre nicht gut, wenn Sie die Artikel einzeln abrufen müssen.

// Addition
if(window.localStorage){
    localStorage.setItem('myapp-' + new Date().getTime(), 'my value');
}

// Removal of all expired items
if(window.localStorage){

    // two mins - (1000 * 60 * 20) would be 20 mins
    var expiryTime = new Date().getTime() - (1000 * 60 * 2);

    var deleteRows = [];
    for(var i=0; i < localStorage.length; i++){
        var key = localStorage.key(i);
        var partsArray = key.split('-');
        // The last value will be a timestamp
        var lastRow = partsArray[partsArray.length - 1];

        if(lastRow && parseInt(lastRow) < expiryTime){
            deleteRows.push(key);
        }
    }
    // delete old data
    for(var j=0; j < deleteRows.length; j++){
        localStorage.removeItem(deleteRows[j]);
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X