緩存
今天,學(xué)習(xí)了緩存,突然發(fā)現(xiàn)緩存有巨大的作用,可以節(jié)省流量,而且
看到很多工作要求,發(fā)現(xiàn)需要有開發(fā)緩存的經(jīng)驗(yàn)。所以總結(jié)一下。
1.什么是緩存
就是我們手動(dòng)開辟一塊空間,讓他一直存在,且不會(huì)給垃圾回收機(jī)制回收。
案例:這個(gè)案例是一個(gè)緩存機(jī)制,最大數(shù)據(jù)存儲(chǔ)三條數(shù)據(jù),多了,就會(huì)刪除
前面的數(shù)據(jù)
function createCache () {
var data = [], max = 3;
// 去掉 var 的目的是為了使得變量編程全局變量, 可以調(diào)試查看 data 中的數(shù)據(jù)
// 開發(fā)中不允許省略 var
function cache ( key, value ) {
// 做判斷, 如果超出范圍, 則, 將最開始加入的 移除
// 將數(shù)組 第 0 項(xiàng)元素移除的 splice, shift
if ( data.length >= 3 ) {
// 需要先移除
var temp = data.shift();
delete cache[ temp ];
}
data.push( key );
cache[ key ] = value;
}
return cache;
}
var kvCache = createCache();
如上代碼,是我們學(xué)習(xí)所研究的代碼,看到上面代碼我發(fā)現(xiàn)有不足之處。
1.多申請了一個(gè)數(shù)組。和一個(gè)變量。
2.看起來不易讓人理解。
我自己寫了一個(gè)改良版的,使用面向?qū)ο蟮膶懙摹?/strong>
(function(w){
function cache(){
this.length=0; //存放數(shù)據(jù)的個(gè)數(shù)
this.maxLength=3; //允許存放數(shù)據(jù)最大的個(gè)數(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);