缓存来自 API 个查询的信息 - 每 10 秒限制为 10 个

Caching information from API queries - Limited to 10 per 10s

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

我最近一直在研究 Riot Games' APIs,但是现在意识到您每 10 秒只能调用 10 次,我需要更改我的前端代码,该代码最初只是加载所有包含大量 API 的信息调用到使用 MySQL 数据库的东西。

我想收集每个玩家的排名数据,并将他们(30 多个玩家)列在一个有序的排名列表中。我在想,正如他们在 Rate Limiting Page、"caching" 数据中提到的那样,当 GET-ing 数据时,然后再次需要该信息时,检查它是否仍然相关——如果是,则使用它,如果不是,则重新-得到它。

是想在table的一列中加入未来30分钟的时间(一场比赛的大致长度),调用时检查服务器时间是否早于保存的时间. 这是正确的 approach/idea 缓存 - 如果不是,这样做的最佳做法是什么?

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

欢迎任何建议,甚至是告诉我我做错了事的建议!

如果需要更多信息,我可以编辑它,让我知道。

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

通常是的,大多数大型应用程序只是简单地设置估计速率限制或手动缓存(检查数据库中的最近调用,如果是旧调用,则转到 API)。

当你使用像op.gg或lolKing这样的大型网站进行召唤师查询时,它们都会给你一个"Must wait X minutes before doing another DB check/Call",我也这样做。所以是的,给出一个估计的数字(比如游戏长度)来处理你的速率限制绝对是我在 Riot 开发者社区中观察到的一种常见做法。有些人确实全力以赴并通过实际缓存实现实际缓存 layers/frameworks,但您不需要对较小的应用程序执行此操作。

我建议先构建应用的主要功能,然后提交,然后再获得更高速率限制的批准。 :)

您还提到调整调用的前端代码,出于安全考虑,请确保您的 API 调用在服务器端代码中。