从API查询中缓存信息 - 限制为每10秒10

时间:2015-09-28 14:21:15

标签: javascript jquery rate-limiting

这里的数据库相对较新(和dba)。

我最近一直在研究Riot Games' API,但是现在意识到你每10秒钟只能进行10次通话,我需要更改我最初只是加载所有信息的前端代码大量的API调用使用MySQL数据库。

我想收集有关每位玩家的排名数据,并在排名的有序列表中列出他们(30多名玩家)。我正在思考,正如他们在Rate Limiting Page中提到的那样,“缓存”数据时获取它,然后当再次需要该信息时,检查它是否仍然相关 - 如果是这样,请使用它,如果不重新获取它

是将未来30分钟(游戏的粗略长度)的时间添加到表格中的列,以及在调用时检查服务器时间是否超过保存时间的想法。 这是缓存的正确方法/想法 - 如果没有,这样做的最佳做法是什么?

无论哪种方式,这都没有解决第一次加载30+值的问题,因为之前没有调用缓存。

任何建议都会受到欢迎,甚至建议告诉我,我做错了!

如果需要更多信息,我可以编辑它,请告诉我。

tl; dr 什么是绕过限速的最佳做法?

1 个答案:

答案 0 :(得分:2)

通常是的,大多数大型应用程序只是简单地设置了估计速率限制或手动缓存(检查数据库是否为最近的呼叫,然后在旧呼叫时转到API)。

当您使用像op.gg或lolKing这样的大型网站进行召唤查看时,他们都会给你一个“必须等待X分钟才能进行另一次数据库检查/呼叫”,我也这样做了。所以是的,给出一个估计的数字(比如游戏长度)来处理你的速率限制绝对是我在Riot开发者社区中观察到的一种常见做法。有些人确实通过实际的缓存层/框架全力以赴实现实际的缓存,但是你不需要用较小的应用程序来实现。

我建议您首先构建应用程序的主要功能,提交它,并获得更高的速率限制。 :)

您还提到调整前端代码以确保调用,请确保您的API调用是服务器端代码,以解决安全问题。