我的网站通过 cURL 查询 Facebook 的分享计数:
http://graph.facebook.com/?ids=MY_SITE_URL
但是,我经常发现我已经达到了 rate limit 。缓存此数据并将其显示在页面上的最佳机制是什么?我的网站不使用数据库,为此目的创建一个数据库似乎很愚蠢。
谢谢!
最佳答案
是的,memcache 或 Redis 是一个不错的选择。
另一种方法是您可以使用 Facebook 的批处理 API 功能。它将同时执行多个请求,因此您可以在一个查询中找到多个 URL 的共享计数。 https://developers.facebook.com/docs/graph-api/making-multiple-requests/
第二个选项是您可以在 php.ini 中创建全局数组。例如
$globalArray = array();
然后,您可以为每个共享计数 URL 创建 key ,然后存储从 API 获取的结果。例如
$globalArray['url'] = $resultFromAPI;
通过这种方式,您可以存储数据,直到刷新页面。
第三个选项是为每个共享计数 URL 创建 session 并将值存储在其中,并在用户注销时清除 session 。
然后每次当您获取特定 URL 的分享计数时,首先检查您是否有该 URL 的值?例如
if(isset($_SESSION['url']) && !empty($_SESSION['url']){
$count = $_SESSION['url'];
}else{
// fetch through facebook graph API
}
如果您使用 Zend Framework,那么 Zend Registry 也是一个不错的选择,它的工作方式与 PHP session 相同。
如果您想要最新信息,则需要调用 Graph API。但是您可以构建仅在一小时后获取数据的逻辑。我的意思是您可以每隔一小时清除这些共享 URL 的 session ,然后再次将数据保存到这些 session 变量中。
希望有帮助。
关于php - 缓存来自 Facebook 的 Open Graph 结果的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26281618/