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?
Antworten
Zu viele Anzeigen?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);
}
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:
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]);
}
}