缓存的作用:
就是将一些常用的数据存储起来,以提供使用,提高性能。
网站静态页面缓存机制:
将网页静态化存储在服务器端,
利用缓存解决递归斐波那契数列性能问题:
function createFib(){
var cache = [];
function fib(n){
//从cache中获取
if(cache[n] !== undefined){
//如果缓存中有,直接返回
return cache[n]
}
//如果缓存中没有,则重新计算
if(n <=2){
cache[n]=1;
return 1;
}
var temp = fib(n-1)+ fib(n-2);
//放入缓存
cache[n]=temp;
return temp;
}
return fib;
}
var fib = createFib();
console.log(fib(6));
封装创建缓存的方法:
function createCache(){
//cache对象中以键值对的形式存储我们的缓存数据
var cache = {};
//index数组中该存储键,这个键是有顺序,可以方便我们做超出容量的处理
var index = [];
return function (key, value) {
//如果传了值,就说名是设置值
if(value !== undefined){
//将数据存入cache对象,做缓存
cache[key] = value;
//将键存入index数组中,以和cache中的数据进行对应
index.push(key);
//判断缓存中的数据数量是不是超出了限制
if(index.length >= 50){
//如果超出了限制
//删除掉最早存储缓存的数据
//最早存入缓存的数据的键是在index数组的第一位
//使用数组的shift方法可以获取并删除掉数组的第一个元素
var tempKey = index.shift();
//获取到最早加入缓存的这个数据的键,可以使用它将数据从缓存各种删除
delete cache[tempKey];
}
}
//如果没有传值,只穿了键,那就是获取值
// else{
// return cache[key];
// }
return cache[key];
}
}