2013-08-06 28 views
0

我在javascript变量中保存了一些从ajax返回的数据。我想在一段时间之后使这个变量失效,比如说一个小时。到期JavaScript变量?

我可以写一些setTimeout函数来处理这个问题,但我只是觉得这不是最优的。

另一种方法是保存cookie并设置到期日期,但开销可能是不必要的。

有没有其他方式可以更好地处理这种情况?

回答

3

假设实际变量实际上存在很久(页面保持打开状态),只需执行每个缓存的操作即可:保存时间戳并检查它。

var cache = { timestamp : null, data : null }; 

function setData(data) { 
    cache.data  = data; 
    cache.timestamp = new Date; 
} 

function getData(maxAge) { 
    if (/* compare cache.timestamp to now - maxAge */) { 
     return null; 
    } 
    return cache.data; 
} 
+0

但是真正的缓存会在某个时候释放内存吗? – Bergi

+0

那么,当您注意到它过期时,也会取消设置数据。缓存在到期时不一定会删除数据,但它们可能会失效。这需要定期运行垃圾收集器。 – deceze

2

保留一个变量,指示值何时到期。

var foo = "bar"; 
var foo_expires_on = new Date(new Date().getTime() + 60 * 60 * 5); // +5 hours 

deceze的答案是更正式的(monad)实现。