Javascript 如何在页面重新加载的情况下限制api调用的速率?
假设我使用的是免费API服务,每m分钟调用c 我正在使用一点javascript,它由我非常基本的站点的主html链接,其中包含以下内容:Javascript 如何在页面重新加载的情况下限制api调用的速率?,javascript,ajax,Javascript,Ajax,假设我使用的是免费API服务,每m分钟调用c 我正在使用一点javascript,它由我非常基本的站点的主html链接,其中包含以下内容: $(function () { //stuff function getSomething() { return $.ajax({ type: 'GET', url: targetURL, data: dataObject, }); }
$(function () {
//stuff
function getSomething() {
return $.ajax({
type: 'GET',
url: targetURL,
data: dataObject,
});
}
getSomething().done(function (returnedStuff){
//process returnedStuff
});
//more stuff
});
我有两个问题:
- 每次重新加载页面时是否都会有api调用
- 如果上面的答案是
,那么如何防止/限制用户/某些其他事件通过重复重新加载页面而超出api限制YES
谢谢你的帮助 tldr:从您的高级示例中做出一些假设:
- 每次重新加载页面时是否都会有api调用是
- 如果以上答案是肯定的,那么如何防止/限制 用户/其他一些事件,因为他们的 重复重新加载页面阅读下面的内容
$(function () {
//stuff
function getSomething() {
return $.ajax({
type: 'GET',
url: targetURL,
data: dataObject,
});
}
getSomething().done(function (returnedStuff){
//process returnedStuff
});
//more stuff
});
限制API调用的建议方法:
使用ajax调用您自己的服务器。
在服务器端,通过您选择的缓存持久化数据,并构建您自己的逻辑来测试数据是否需要刷新(第一次调用、超时后等)
这样,您就不会向客户端公开API url和详细信息,并且可以控制对API的调用量
出于优化目的,您还可以缓存客户端的数据……但保留服务器端的逻辑和API调用
希望这有帮助
ps.如果您需要一个示例,请提供您正在使用的平台,我将非常乐意为您快速制作一个示例
pps。您只需缓存客户端,然后使用内置的逻辑从客户端调用API来测试缓存,但显然任何人都可以调用您的API。tldr:从您的高级示例中做出一些假设:
- 每次重新加载页面时是否都会有api调用是
- 如果以上答案是肯定的,那么如何防止/限制 用户/其他一些事件,因为他们的 重复重新加载页面阅读下面的内容
$(function () {
//stuff
function getSomething() {
return $.ajax({
type: 'GET',
url: targetURL,
data: dataObject,
});
}
getSomething().done(function (returnedStuff){
//process returnedStuff
});
//more stuff
});
限制API调用的建议方法:
使用ajax调用您自己的服务器。
在服务器端,通过您选择的缓存持久化数据,并构建您自己的逻辑来测试数据是否需要刷新(第一次调用、超时后等)
这样,您就不会向客户端公开API url和详细信息,并且可以控制对API的调用量
出于优化目的,您还可以缓存客户端的数据……但保留服务器端的逻辑和API调用
希望这有帮助
ps.如果您需要一个示例,请提供您正在使用的平台,我将非常乐意为您快速制作一个示例
pps。您可以简单地缓存客户端,然后从客户端调用API,并内置一些逻辑来测试缓存-但显然,任何人都可以调用您的API。您是否使用php或asp.net之类的工具?何时调用getSomething()?第一点的答案是肯定的,关于第二点:您可以“防止”(不是真的,因为它是javascript,所以他可以随时调用它)在这样的上下文中,用户可以通过使用cookie或本地存储之类的东西来避免超出api。此外,请记住,您正在客户端计算机上运行脚本,因此您限制了他对api的调用,而不是您的。但是,如果他每次都要获取api,他可以在未经您允许的情况下执行此操作。为了防止hi无论如何,我不会再抓取了,我会使用cookie或localstorage对象。(另外,我假设在加载DOM时,您在页面的某个地方至少调用了一次getSomething函数)我将详细说明,因为每个人都缺少一个非常简单的解决方案。如果您可以在web服务器上编写一个代理类型函数,那么您只需编写一个调用API并缓存数据的web方法(除非每次都更改)如果调用超过API限制,则返回缓存数据。是否使用php或asp.net之类的工具?何时调用getSomething()