我在基于表达的应用程序中使用节点缓存。需要使用以下代码进行设置;
const NodeCache = require( "node-cache" );
const myCache = new NodeCache( { stdTTL: 100, checkperiod: 120 } );
之后,它可以像
myCache.get(key)
我遇到的问题是,在快速设置中,我的路由是动态的,我无法访问在index.js中声明的myCache常量,我在模块上读取并了解它们已被缓存,并且调用所需的每个新调用都会被缓存版。
为了克服我的问题,并能够从任何路由中调用同一对象,我想到了在路由中使用以下单例方法:
var nodeCache = require('node-cache');
if (!nodeCache.instance) {
nodeCache.instance = new nodeCache({ stdTTL: 3600 });
}
nodeCache.instance.get('key');
这似乎工作良好,但是我不确定该设置是否可行,或者是否有更好的选择。
最佳答案
CommonJS模块在首次导入时进行评估,并且自然可以提供单例作为导出值。
cache.js模块可以是:
var nodeCache = require('node-cache');
module.exports = new nodeCache({ stdTTL: 3600 });
然后,将相同的节点缓存实例从使用的所有地方都从cache.js导入。