我有一个带有动态内容的div:
<div id="news">test</div>
并希望将其内容添加到LocalStorage 50秒,以防止对服务器的新请求,如果它的年龄大于50秒,则将其删除并设置新内容。我的jQuery是:
$(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);
});
问题是:它将内容添加到localstorage中的每个负载中,但应检查时间戳,如果添加了内容超过50秒,则重写此localstorage数据。如果少于50秒,就什么也不做。谢谢您的帮助。
请随时编辑小提琴:http://jsfiddle.net/kqmky/1/
感谢一百万
您可以在设定功能中进行检查,以查看该值是否存在,并在那里检查其ttl
这样的事情应该足够:
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
}
}
这样,如果没有条目,则将其设置为保存,或者如果有条目,但其TTL已通过,则它将覆盖它