flash网站源文件下载,网站开发过程 文档,湖南省建四公司官网,链家网的网站开发费用大概多少钱我们在日常编码中#xff0c;经常会用到缓存#xff0c;而一个有效的缓存管理#xff0c;也是大家必不可少的工具。而nodejs没有内置专用的缓存对象#xff0c;并且由于js的作用域链的原因#xff0c;很多变量使用起来容易出错#xff0c;如果用一个通用的缓存管理起来经常会用到缓存而一个有效的缓存管理也是大家必不可少的工具。而nodejs没有内置专用的缓存对象并且由于js的作用域链的原因很多变量使用起来容易出错如果用一个通用的缓存管理起来会方便很多于是就手写了一个简单的nodejs缓存对象并且可以指定变量保存时间。代码如下
exports.cache (function(){function MyCatch(isClear){var __cache {};var __clearable !!isClear;this.set function(name, value, expireTime){ __cache[key_ name] {expire: expireTime || 36000000, // 默认有效时间10小时, 36000000expTime: (new Date()).getTime() (expireTime || 36000000),data: value};}this.get function(name) {var che __cache[key_ name];if(che __clearable){var now (new Date()).getTime();if(che.expTime now ){delete __cache[key_ name];che null;}else{che.expTime now che.expire;}}return che}this.del function(name) {delete __cache[key_ name];}}return new MyCatch(true);
})();
这个版本的缓存对象是在用户取对象时判断是否过期并消除过期对象。还有一个版本采用setInterval方法自动消除过期对象代码如下
exports.cache (function(){function MyCatch(isClear){var __cache {};this.set function(name, value, expireTime){__cache[name] {expire: expireTime || 900000, // 默认有效时间15分钟, 900000毫秒expTime: parseInt((new Date()).getTime() / 1000, 10) (expireTime || 900000),data: value};}this.get function(name) {var cache_value __cache[name];__cache[name] (cache_value.expTime parseInt((new Date()).getTime() / 1000, 10) cache_value.expire);return cache_value}this.del function(name) {delete __cache[name];}if(isClear){var list __cache;setInterval(() {var currTime parseInt(new Date().getTime / 1000, 10);for(var key in list){var che list[key];// if(che.expTime 0){continue;}if(che.expTime currTime ){delete __cache[key];}}}, 10000);}}return new MyCatch(true);
})();
两种方法各有优缺点大家可以根据个人喜好选择使用或根据自己意愿修改。