/ / comprobación de TimeStamp para el registro de almacenamiento local - javascript, jquery, local-storage

comprobación de TimeStamp para el registro de almacenamiento local: javascript, jquery, local-storage

Tengo un div con contenido dinámico:

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

Y desea agregar su contenido a LocalStorage durante 50 segundos para evitar nuevas solicitudes al servidor y, si tiene más de 50 segundos, elimínelo y establezca un nuevo contenido. Mi jQuery es:

 $(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);
});

El problema es: está agregando el contenido al LocalStorage en cada carga, pero debe verificar la marca de tiempo y, si el contenido se agregó más de 50 segundos, debe volver a escribir estos datos de LocalStorage. Si es menos de 50 segundos que simplemente no hacer nada. Gracias por tu ayuda.

Por favor, siéntase libre de editar el violín: http://jsfiddle.net/KQmky/1/

Un millón de gracias

Respuestas

1 para la respuesta № 1

Usted podría hacer una verificación en la función de ajuste, para ver si el valor existe, y comprobar su ttl allí también

Algo como esto debería bastar:

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
}
}

De esa manera, si no hay entrada, configúrelo para guardar, o si hay una entrada pero su ttl ha pasado, se sobrescribirá.