检查TimeStamp的LocalStorage记录

时间:2014-03-06 13:52:23

标签: javascript jquery local-storage

我有一个动态内容的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/

万分感谢

1 个答案:

答案 0 :(得分:1)

你可以检查一下set函数,查看该值是否存在,并检查它的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已经过去则会覆盖它