Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何避免Facebook Graph API对百万用户的限制_Facebook_Facebook Graph Api - Fatal编程技术网

如何避免Facebook Graph API对百万用户的限制

如何避免Facebook Graph API对百万用户的限制,facebook,facebook-graph-api,Facebook,Facebook Graph Api,我有一个WordPress网页,上面有从公共Facebook页面检索的帖子。FB页面不是我的。然而问题是,我的网页上有数百万访问者,每次用户访问该网页时,它都会对FB页面进行API调用。由于facebook在一个时间范围内只允许有限数量的API调用,我的限制在访问量如此巨大的情况下立即达到。这个问题有什么解决办法吗。我的想法是: 1.从Facebook检索帖子,并将其存储在本地,并在用户每次访问时显示。可能吗?如果是,从哪里开始? 或者我们可以通过支付facebook或者类似的东西来获得更多的A

我有一个WordPress网页,上面有从公共Facebook页面检索的帖子。FB页面不是我的。然而问题是,我的网页上有数百万访问者,每次用户访问该网页时,它都会对FB页面进行API调用。由于facebook在一个时间范围内只允许有限数量的API调用,我的限制在访问量如此巨大的情况下立即达到。这个问题有什么解决办法吗。我的想法是:

1.从Facebook检索帖子,并将其存储在本地,并在用户每次访问时显示。可能吗?如果是,从哪里开始? 或者我们可以通过支付facebook或者类似的东西来获得更多的API调用。只要我的API调用能够满足我的需要,我愿意支付。
我愿意接受任何解决方案,并非常感谢您为解决此问题提供的任何帮助。

此问题有几种可能的解决方案

在数据库中存储响应 您可以使用应用程序向Facebook API的请求添加一个中间点。这意味着您将拥有一个存储Facebook相关信息的数据库表,可能还有一个生命周期,如:

facebook数据(用户id、生命周期时间等)

无论何时理论上需要向Facebook API发送请求,都可以检查数据库表,查看用户是否已经在该表中有记录,以及该记录是否仍然有效。如果是,请将此数据提供给用户。如果没有,则向Facebook发送API请求并将响应存储在此表中

将响应存储在localStorage/memory/file中 您还可以将Facebook相关数据存储在web浏览器的本地存储中,存储在应用程序或文件的内存中,甚至存储在每个用户的本地数据库中。这将阻止您的应用程序在服务器上发出的大量通信和服务器负载

正在排队等待发送的用户请求 如果Facebook相关数据对您的用户来说不是很紧急,您可以将要发送的请求排队,并发送单个请求,而不是每个用户每次访问的请求。您可以通过cron作业来实现这一点

定期向Facebook发送请求 你可以将你的用户分组,通过Facebook定期更新他们的值,并存储在你的数据库中

组合
当然,您可以将这两种方法结合起来,例如,您可以同时将值存储在本地内存、文件或本地存储中以及数据库中,因此首先搜索本地存储的信息,如果信息存在并且仍然有效,甚至不需要请求。如果没有,则检查数据库记录,如果它存在并且仍然有效,则使用该记录。如果在本地资源或数据库中找不到数据,则可以发送API请求。

您永远不应该这样做。.始终缓存结果,这显然会在大量用户中达到API限制。不过,对于stackoverflow来说,如何缓存内容有点宽泛。最好的方法可能是在用户点击页面时检查上一次api调用的时间戳-如果时间戳早于x分钟,则执行api调用以检查要存储在缓存中的新项目。顺便说一句,确保页面所有者知道这一点。。。