javascript - 如何将 API 响应缓存 24 小时,之后我们可以调用 API 并在 ReactJS 中再次更新缓存
问题描述
如何缓存 API 响应?
在当前场景中,我们遇到了 API 被点击 10k 次的问题,而这个 API 我们只需要在 24 小时后调用一次。
let configurationsLoaded = false
async function fetch() {
try {
// Here we will have the JSON response
const data = await agent.Core.fetch()
if (!Array.isArray(data)) {
throw new Error('Invalid response (' + JSON.stringify(data) + ')')
}
data.forEach(({ Name, Value }) => {
if (Name.startsWith('url.path.')) {
config.urls[Name.replace('url.path.', '')] = Value
} else if (Name.startsWith('kafka.topic.')) {
config.kafkaTopics[Name.replace('kafka.topic.', '')] = Value
}
})
configurationsLoaded = Object.keys(config.urls).length > 0
if (configurationsLoaded) {
configurationsLoadedTime = Date.now()
}
} catch (error) {
configurationsLoaded = false
showToastMessage('Failed to fetch app configurations: ' + error.message)
return console.error('Failed to fetch app configurations', error)
}
}
我们是否需要使用 LocalStorage API 来缓存数据?因为即使在数据加密之后,我也读过很多文章。这不安全!或者我们可以使用浏览器的缓存 API 吗? https://developer.mozilla.org/en-US/docs/Web/API/Cache
我们也使用了 'superagent-bluebird-promise' npm 包,那么我们可以使用拦截器来缓存调用吗?
什么是我们可以在这里使用的最佳方法来将数据保留 24 小时并在每 24 小时后调用一次。
PS我不是要代码,但是如果有人可以给我一个转换为结果的步骤,那将是一个很大的帮助!提前致谢!
解决方案
推荐阅读
- neo4j - 如何优化三个具有相似特征的查询?(暗号)
- python-3.x - 为什么 python 列表发生了变化。我没有编码
- android - 创建 Pixel 4 虚拟设备
- regex - Ansible 剧本字符串搜索
- java - Tomcat 找不到 Java servlet 的开发版本
- asp.net - 如何通过服务器端向paypal发送参数
- unity3d - 在 Unity3D 中将纬度/经度/高度转换为 XYZ 坐标
- javascript - 点击标记点 Forge
- python - 没有流量时如何将 Google App Engine 实例缩减到 0?
- chart.js - 在条形图中,可以使较低的数字具有较高的条形吗?