繁体   English   中英

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

[英]How does one limit rate of api calls despite page reload?

假设我使用的是免费的API服务,每平方米分钟的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限制。

谢谢您的帮助。

tldr:从您的高级示例进行一些假设:

  • 每次重新加载页面时都会有一个api调用吗?
  • 如果以上答案为是,那么如何通过重复加载页面来防止/限制用户/其他事件超过api限制。 参见下文

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

请记住,客户端代码对客户端是可见的-因此,如果这是您的体系结构,那么您正在向客户端公开API。 然后,例如,我可以编写自己的JavaScript来循环并反复调用您的API ...

我的假设是数据不需要在每次重新加载时刷新。 考虑到这一点,我建议您执行以下操作:

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

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

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

希望这可以帮助!

ps。 如果您需要一个示例,请仅提供您要在哪个平台上进行编码,而我将非常乐意为您提供一个快速的示例!

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM