在任何一个语言中,如果要一段程序计算量比较大、执行时间比较长,我们可以将计算结果保存下来,待一下次执行相同的程序时,可以去保存的结果中直接获取,而无需再次计算,这种方式就叫做缓存。

在JavaScript中的实现如下

function longTime(key){
    console.log('after 2000 years....');
    return key + '的计算结果';
}
let cache = {};
function compute(param){
    let result;
    let key = param.toString();
    if(cache[key]){
                console.log('从缓存获取');
        result = cache[key];
                console.log(result);
    }else{
                console.log('没有从缓存获取');
        cache[key] = result = longTime(param);
                console.log(result);
    }
    return result;
}
// 执行
compute('key1');
compute('key2');
compute('key3');
compute('key3');

可以看到执行结果

VM45407:14 没有从缓存获取
VM45407:2 after 2000 years....
VM45407:16 key1的计算结果

VM45407:14 没有从缓存获取
VM45407:2 after 2000 years....
VM45407:16 key2的计算结果

VM45407:14 没有从缓存获取
VM45407:2 after 2000 years....
VM45407:16 key3的计算结果

VM45407:10 从缓存获取
VM45407:12 key3的计算结果
"key3的计算结果"

波罗丁的菠萝
886 声望14 粉丝

深林人不知,明月来相照