使用SailsJS/Express在请求之间保留对象

Rob*_*Rob 7 node.js express sails.js

我正在使用SailsJS(一个构建在Express之上的框架)构建服务器,我需要在请求之间保留一个内存中的对象.我想这样做是因为将数据加载到数据库或从数据库加载它的过程太长了.我有什么想法可以做到这一点?

这是我的代码:

var params = req.params.all();

Network.findOne({ id: params.id }, function(err, network) {
  if(network) {
    var synapticNetwork = synaptic.Network.fromJSON(network.jsonValue);
    if(synapticNetwork) { ...
Run Code Online (Sandbox Code Playgroud)

具体来说,该fromJSON()函数占用时间太长,我宁愿synapticNetwork在服务器运行时将对象保留在内存中(也就是说,在服务器启动时加载它并且只是定期保存).

Vse*_*nin 13

有很多库用于缓存目的,其中一个node-cache就像你提到的那样.所有人都有类似的api:

var cache = require('memory-cache');

// now just use the cache

cache.put('foo', 'bar');
console.log(cache.get('foo'))
Run Code Online (Sandbox Code Playgroud)

您还可以实现自己的模块,只需在任何需要的地方使用它:

var cache = {};

module.exports = {
    put: function(key, item) {
        cache[key] = item;
    },
    get: function(key) {
        return cache[key];
    }
}
Run Code Online (Sandbox Code Playgroud)