var cache = {
has: (key) => {
if (key === 1) return true
else return false
},
get: (key) => {
return "cached value " + key
}
}定义测试方法
function request(key) {
return 'value of ' + key
}应用注入
request = request.cache()执行一下
request(2)
"value of 2"
request(1)
"cached value 1"看到结果按照预期输出,完美!
最后实现
项目引用了
memory-cache 作为基础缓存库,实现了相关的缓存功能。
simple-cache.js
const cache = require('memory-cache');
Function.prototype.cache = function (cachekey, time) {
var _self = this;
return function() {
var key = cachekey(arguments);
var value = cache.get(key);
if (!value) {
value = _self.apply(this, arguments)
cache.put(key, value, time);
}
return value;
}
}
var simpleCache = {
cache: function(f, cacheKey, cacheTime) {
return f.cache(cacheKey, cacheTime);
}
}
module.exports = simpleCache
sample.js
const cache = require('simple-cache-z').cache;
function cachekey(args) {
return args[0]}
function request(key) {
return (new Date()).getTime();
}
request = cache(request, cachekey, 5000);
console.log('request 1 ', request(1));
setTimeout(() => {
console.log('request 2 ', request(2));
}, 1000)
setTimeout(()=> {
console.log('request 1 ', request(1))
console.log('request 1 ', request(1))
console.log('request 1 ', request(1))
console.log('request 2 ', request(2));
console.log('request 2 ', request(2));
console.log('request 2 ', request(2));
}, 2000);
setTimeout(()=> {
console.log('request 1 ', request(1));
console.log('request 1 ', request(1));
console.log('request 1 ', request(1));
console.log('request 2 ', request(2));
console.log('request 2 ', request(2));
console.log('request 2 ', request(2));
}, 10000);输出结果
request 1 1563000551142
// 1000 ms
request 2 1563000552150
// 2000 ms
request 1 1563000551142
request 1 1563000551142
request 1 1563000551142
request 2 1563000552150
request 2 1563000552150
request 2 1563000552150
// 10000 ms
request 1 1563000561151
request 1 1563000561151
request 1 1563000561151
request 2 1563000561151
request 2 1563000561151
request 2 1563000561151
大功告成!









