緩存
今天盛末,學習了緩存弹惦,突然發(fā)現(xiàn)緩存有巨大的作用,可以節(jié)省流量悄但,而且
看到很多工作要求棠隐,發(fā)現(xiàn)需要有開發(fā)緩存的經(jīng)驗。所以總結(jié)一下檐嚣。
1.什么是緩存
就是我們手動開辟一塊空間助泽,讓他一直存在啰扛,且不會給垃圾回收機制回收。
案例:這個案例是一個緩存機制嗡贺,最大數(shù)據(jù)存儲三條數(shù)據(jù)隐解,多了,就會刪除
前面的數(shù)據(jù)
function createCache () {
var data = [], max = 3;
// 去掉 var 的目的是為了使得變量編程全局變量, 可以調(diào)試查看 data 中的數(shù)據(jù)
// 開發(fā)中不允許省略 var
function cache ( key, value ) {
// 做判斷, 如果超出范圍, 則, 將最開始加入的 移除
// 將數(shù)組 第 0 項元素移除的 splice, shift
if ( data.length >= 3 ) {
// 需要先移除
var temp = data.shift();
delete cache[ temp ];
}
data.push( key );
cache[ key ] = value;
}
return cache;
}
var kvCache = createCache();
如上代碼诫睬,是我們學習所研究的代碼煞茫,看到上面代碼我發(fā)現(xiàn)有不足之處。
1.多申請了一個數(shù)組摄凡。和一個變量续徽。
2.看起來不易讓人理解。
我自己寫了一個改良版的亲澡,使用面向?qū)ο蟮膶懙摹?/strong>
(function(w){
function cache(){
this.length=0; //存放數(shù)據(jù)的個數(shù)
this.maxLength=3; //允許存放數(shù)據(jù)最大的個數(shù)
}
cache.prototype.add=function(str,value){
++this.length;
this[str]=value;
if(this.length>this.maxLength){ //如果存放數(shù)據(jù)長度大于最大數(shù)據(jù)長度就刪除
console.log(1);
for(var k in this){
if(k=='length' ||k=='maxLength')continue;
delete this[k];
break;
}
}
}
w.cache= new cache();
})(window);