我有一个API导出大量的数据,所以我尝试使用节点缓存,使API将更快,因为需要超过2分钟来获取数据,我是新的,所以我发现以下代码:注解:环境节点js/express
const NodeCache = require("node-cache");
const axios = require('axios');
const myCache = new NodeCache({stdTTL:100000})
axios.get('http://localhost:5000/test/example)
.then(function (response) {
console.log(response)
myCache.set("exampleCache",response,10000);
res.send(response)
任何建议或推荐都会很棒!
2条答案
按热度按时间hyrbngr71#
默认情况下,NodeCache模块会在保存对象之前克隆对象。
在您的示例中,您尝试缓存Axios响应对象,NodeCache无法克隆该对象(它是一个大而复杂的对象),因此您得到了错误。
相反,我建议克隆HTTP响应数据(response.data),它要小得多,也可以克隆整个Axios响应对象,如代码示例所示,但需要在NodeCache初始化期间设置选项
{useClones: false}
,这样NodeCache将只保存对该对象的引用。polhcujo2#
解决方案是使用缓冲区,但由于我们有很多数据,因此从数据库增加内存是解决方案