过期javascript变量?

时间:2013-08-06 09:05:45

标签: javascript caching

我在javascript变量中保存了从ajax返回的一些数据。我希望在一段时间后,比如一小时,使这个变量无效。

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

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

还有其他方法可以更优雅地处理这种情况吗?

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:2)

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

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

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