2017-09-05 47 views
0

我有一个应用正在触及损害用户体验的API的速率限制。我有一个想法来解决这个问题,但不知道这是否是理想的解决方案。这个想法是否有意义并且是解决这个问题的好方法?我应该如何去实施它?我正在使用react-native和nodejs。请求API并每分钟存储的最佳方式

这里的理念是:

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

+0

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

回答

2

你的想法很好。

你的中间人将是一个缓存代理。它会按照你的说法行事。哈瓦看看https://github.com/active-video/caching-proxy它几乎是你想要的。它创建一个服务器,它将接收URL请求,获取并缓存这些请求,并从现在起提供缓存版本。

唯一的缺点是它没有缓存的生存期选项。你可以分叉来添加选项,或者运行一个守护进程来删除那些太旧的文件而不能强制重新获取。

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

+0

很棒的听到。谢谢!我以前从未设置过服务器。任何我应该知道的事情?另外就每分钟请求而言,大概是什么样子? – PurplePanda

+0

如果你绝对想每分钟都要求一次,在nodeJS中你可以使用setInterval或类似crontab的模块。至于建立一个服务器,SO不是这种讨论的场所,它在讨论中太宽泛了。我建议你阅读教程。 – Salketer