从api获得响应大约需要1.5 s,所以我认为我可能只每n分钟保存一次响应,然后而不是在命令中调用api而是返回保存的响应。所以我的问题是最好的方法是什么?由于api响应很长,因此我认为将其保存到db并不是一件好事。 也许每次调用的命令只是调用api,然后将其保存在某处n分钟,如果在这n天内再次调用该命令,则只会获取已保存的响应,而不是每次都调用api。
我只是不确定如何以及在哪里保存回复。
const fetch = require('node-fetch');
let data = await fetch('apiurl').then(body => body.json());
答案 0 :(得分:1)
在此示例中(我知道非常简单),我们有一个内存缓存,如果时间超过5秒,则刷新。
const dummyGetLiveData = () => {
return { "data": "value" }
};
let cache;
let maxCacheAgeInMilliseconds = 5000; // 5secs
const provideData = () => {
if(!cache || (Date.now() - cache.timeStamp > maxCacheAgeInMilliseconds) ) {
console.log('Cache Build');
cache = {
timeStamp: Date.now(),
data: dummyGetLiveData()
}
}
return cache.data;
};
document.querySelector('button').addEventListener('click', () => {
console.log(provideData());
});
<button>Get Data</button>