gpt4 book ai didi

javascript - 将 Memoizee 与 node.js 结合使用

转载 作者:行者123 更新时间:2023-11-29 23:41:37 25 4
gpt4 key购买 nike

我想使用 Memoizee在我的 node.js 后端,以加速请求。

但出于某种原因,我无法让它按我想要的方式工作。我有一条路线,等待另一个方法的回调,但无论我将结果保存在缓存中多长时间,它每次都会运行整个方法。

我做错了什么?

这是我的实现示例。

var memoize = require('memoizee');

module.exports = function (app) {

app.route('/someurl/:user_id')
.get(function (req, res) {

var user_id = req.params.user_id;

memoized(user_id, function (result) {
res.send(result)
})
});
};

var doWork = memoize(function(user_id, done) {
//Handling a lot of data - takes about 10-15 seconds
done(index);
});

var memoized = memoize(doWork, {maxAge: 300000});

最佳答案

有两个问题:

  1. 由于有两个函数参数,memoization 会根据这两个参数进行内存。
    很可能每次调用的 done 回调都是不同的,因此您每次都会看到函数重新运行。
    如何解决?首先,您可以通过在选项中传递 { length: 1 } 将内存范围限制为第一个参数。其次,我有一个想法,它是您尝试内存的异步函数,因为最好依赖 memoizee 中的 asyncpromise 配置选项(请参阅它的文档)

  2. 正如@Bergi 指出的那样,您尝试内存已经内存的函数。第二次内存(一个带有 maxAge)没有效果,因为内存在内部检测到你正在尝试做什么,并忽略第二次调用。应该只有一个 memoizee wrap(选项可以组合,没有问题)。

关于javascript - 将 Memoizee 与 node.js 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45108429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com