【问题标题】:Best way to request API and store every minute每分钟请求 API 和存储的最佳方式
【发布时间】:2018-02-13 21:51:13
【问题描述】:

我有一个应用程序达到了 API 的速率限制,这会损害用户体验。我有一个解决这个问题的想法,但不知道这是否是解决这个问题的理想方法。这个想法有意义吗?它是解决这个问题的好方法吗?我应该如何实施它?我正在使用 react-native 和 nodejs。

这是一个想法:

我的应用会从我制作的“中间人”API 请求数据。中间人 API 将每分钟从我遇到速率限制问题的主 API 请求一次数据(这应该解决速率限制问题),然后将其存储一分钟,直到它再次更新。我在想最好的方法是在 AWS 上旋转一个服务器,每分钟从另一个 API 请求(这是每分钟获取请求的最简单方法吗?)然后将它存储在空白的中间人网页上(或者我需要将它存储在像 MongoDB 这样的数据库中吗?)。然后我的应用程序将从该中间人网页/API 调用。

【问题讨论】:

  • 我不会每分钟都获取...如果您的网站上一个小时没有人,您提出了 60 个无用的请求。

标签: node.js rest api reactjs


【解决方案1】:

你的想法不错。

您的中间人将是一个缓存代理。它会像你所说的那样行动。看看https://github.com/active-video/caching-proxy,它几乎可以满足您的需求。它创建一个服务器来接收 URL 请求,获取并缓存这些请求,并从现在开始提供缓存的版本。

唯一的缺点是它没有缓存的生命周期选项。您可以 fork 以添加该选项,或者运行一个守护程序来删除太旧而无法强制重新获取的文件。

编辑: 缓存代理的一个非常有趣的补充是有一个头部请求来知道结果是否改变。虽然并非所有 API 都提供此功能,但如果您的 API 显示此类信息,这可能会很有用。仅当 HEAD 请求不计入您的 API 限制时...

【讨论】:

  • 很高兴听到。谢谢!我以前从未设置过服务器。有什么我应该知道的吗?另外就每分钟请求一次,大致会是什么样子?
  • 如果您绝对想每分钟请求一次,在 nodeJS 中您可以使用 setInterval 或类似 crontab 的模块。至于设置服务器,SO 不是这种讨论的地方,而且太宽泛,无法在评论中讨论。我建议你阅读教程。
猜你喜欢
  • 2018-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-24
  • 1970-01-01
  • 1970-01-01
  • 2022-01-05
  • 2019-11-03
相关资源
最近更新 更多