我在基于表达的应用程序中使用节点缓存。需要使用以下代码进行设置;

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导入。

10-01 17:56