保存 json 响应 n 分钟
Save json response for n minutes
从 api 获得响应大约需要 1.5 秒,所以我想我可以每 n 分钟保存一次响应,然后我不会在命令中调用 api,而是 return 已保存响应。所以我的问题是最好的方法是什么?由于 api 响应很长,我认为将其保存到数据库不是一件好事。
或者也许每次调用命令时只调用 api 然后将其保存在某处 n 分钟,如果在这 n 时间段内再次调用命令只是保存响应而不是每次调用 api .
我只是不确定如何以及在何处保存回复。
const fetch = require('node-fetch');
let data = await fetch('apiurl').then(body => body.json());
在这个例子中(我知道的一个非常简单的例子)我们有一个内存缓存,如果超过 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>
从 api 获得响应大约需要 1.5 秒,所以我想我可以每 n 分钟保存一次响应,然后我不会在命令中调用 api,而是 return 已保存响应。所以我的问题是最好的方法是什么?由于 api 响应很长,我认为将其保存到数据库不是一件好事。 或者也许每次调用命令时只调用 api 然后将其保存在某处 n 分钟,如果在这 n 时间段内再次调用命令只是保存响应而不是每次调用 api .
我只是不确定如何以及在何处保存回复。
const fetch = require('node-fetch');
let data = await fetch('apiurl').then(body => body.json());
在这个例子中(我知道的一个非常简单的例子)我们有一个内存缓存,如果超过 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>