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 № 1Usted 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á.