/ / sprawdzanie TimeStamp dla rekordu LocalStorage - javascript, jquery, pamięć lokalna

sprawdzanie rekordu TimeStamp dla LocalStorage - javascript, jquery, local-storage

Mam div z dynamiczną zawartością:

<div id="news">test</div>

I chcesz dodać jego zawartość do LocalStorage na 50 sekund, aby zapobiec nowym żądaniom do serwera i jeśli jest starszy niż 50 sekund, usuń go i ustaw nową zawartość. Moje jQuery to:

 $(function(){
function now() {return+new Date}
var db = window.db = {
get  : function(key) {
var entry = JSON.parse(localStorage.getItem(key)||"0");
if (!entry) return null;
if (entry.ttl && entry.ttl + entry.now < now()) {
localStorage.removeItem(key);
return null;
}
return entry.value;
},
set : function( key, value, ttl ) {
localStorage.setItem( key, JSON.stringify({
ttl   : ttl || 0,
now   : now(),
value : value
}) );
}
};
});

$(function() {
// Set Value with TTL of 50 Seconds using Milliseconds.
db.set( "homeNews", $("#news").html(), 50000 );
});

$(function() {
var contentsOfNews = db.get("homeNews");
$("#news").html(contentsOfNews);
});

Problem polega na: dodaje zawartość do LocalStorage przy każdym obciążeniu, ale powinna sprawdzać sygnaturę czasową i jeśli zawartość została dodana więcej niż 50 sekund, należy przepisać dane LocalStorage. Jeśli mniej niż 50 sekund, nie rób nic. Dziękuję za pomoc.

Możesz edytować skrzypce: http://jsfiddle.net/KQmky/1/

Stukrotne dzięki

Odpowiedzi:

1 dla odpowiedzi № 1

Możesz sprawdzić funkcję set, sprawdzić, czy wartość istnieje, i sprawdzić tam także ttl

Coś takiego powinno wystarczyć:

set : function( key, value, ttl ) {
var entry = JSON.parse(localStorage.getItem(key)||"0");

if (!entry || (entry.ttl && entry.ttl + entry.now < now())) {
//set the new value in local storage
}
}

W ten sposób, jeśli nie ma wpisu, ustaw go, aby zapisać, lub jeśli istnieje wpis, ale jego ttl minęło, to go zastąpi