在TJ的Connect模块中看到Cache中一个LRU算法,太简单了,一起品一下:
Cache.prototype.add = function(key){
// initialize store
var len = this.keys.push(key);//在数组最后添加一个元素
// limit reached, invalidate LRU
if (len > this.limit) this.remove(this.keys.shift());//删除数组的第一个元素
var arr = this.store[key] = [];//这里为什么赋值为空数组???
arr.createdAt = new Date;
return arr;
};
5 回复
staticCache即采用cache模块LRU算法,给出的性能测试数据如下:
- static(): 2700 rps
- node-static: 5300 rps
- static() + staticCache(): 7500 rps staticCache比node-static快 29%,并且支持LRU算法。
因此组合使用static()+staticCache()应该能够获得更好的性能。【以上数据作者TJ的说明,我并没有验证】