尽管页面重新加载,如何限制api调用的速率?

时间:2016-07-04 08:05:34

标签: javascript ajax

假设我使用免费API服务,每 m 分钟限制 c 次。

我正在使用我的基本网站的主要html链接的一小部分javascript,其中包含以下内容:

$(function () { 

//stuff

    function getSomething() {
        return $.ajax({
           type: 'GET',
           url: targetURL,
           data: dataObject,
        });
    }

    getSomething().done(function (returnedStuff){
        //process returnedStuff
    });

//more stuff

});

我有两个问题:

  • 每次重新加载页面时都会有api调用吗?
  • 如果上面的答案是YES,那么如何通过重复重新加载页面来阻止/限制用户/某些其他事件超过api限制。

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

tldr:从您的高级示例做出一些假设:

  • 每次重新加载页面时都会有api调用吗?的
  • 如果上面的答案是肯定的,那么如何防止/限制 用户/其他一些事件超出了他们的api限制 重复重新加载页面。 请阅读以下

进一步说明: 取决于您的示例代码是否会访问您自己的服务器端代码,然后生成API代码...或者您是否直接从客户端调用API。如果在重新加载时调用该函数(文档就绪或其他),则它将在每次重新加载时执行。否则,显然只有当你调用方法时(比如通过按钮点击)。

请记住,客户端代码对客户端是可见的 - 因此,如果这是您的架构,那么您将API暴露给客户端。然后,我可以编写自己的javascript循环并重复调用您的API ...

我的假设是每次重新加载时都不需要刷新数据。考虑到这一点,我建议你做以下事情:

限制API调用的建议方法: 使用ajax调用您自己的服务器。 在服务器端,通过您选择的缓存来保存数据,并构建您自己的逻辑,以测试是否需要刷新数据(首次调用,超时后等)。

这样您就不会将API网址和详细信息公开给客户端,并且您可以控制对API的调用量。

出于优化目的,您还可以缓存数据客户端...但保留逻辑和API调用服务器端。

希望这有帮助!

ps。如果您需要一个示例,请提供您正在编码的平台,我将非常愿意为您提供快速示例!< / p>

pps。您可以简单地缓存客户端并从中调用API调用,并使用内置的逻辑来测试缓存 - 但显然任何人都可以调用您的API。