将json响应保存n分钟

时间:2019-03-08 01:00:03

标签: javascript node.js discord.js

从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());

1 个答案:

答案 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>