[英]Open Library Covers API Rate Limit
我正在使用PHP / Codeigniter创建基本的库Web应用程序。 我正在从MySQL数据库检索图书ISBN,并显示标题(从我的数据库)和封面图像(从openlibrary.org)。 我每页显示10个结果,但是我计划在屏幕上使用分页的导航栏,以便用户可以浏览多个页面。
到目前为止,所有程序都运行良好,但是查看“ Open Library Covers API速率限制 ”表明:
除CoverID和OLID以外的其他ID的掩护访问是受速率限制的。 目前,每5分钟仅允许100个请求/ IP。
如果任何IP尝试访问的数量超出允许的限制,则该服务将返回“ 403 Forbidden”状态。
因此,如果我每页显示10条结果,那是10个单独的请求? 并且,如果有10个不同的用户同时访问我的页面,我是否认为100个单独的请求超出了限制?
避免这种情况的最佳方法是什么? 我想到了两种可能性;
$this->output->cache($n)
在Codeigniter中使用页面缓存。 启用此功能后,我可以看到在application/cache
中创建了一个文件,其中包含10条记录和相应的图像。 也许还有另一种方法可以解决这个问题?
如果可以,我的工作代码在下面。
模型
public function itemList() {
$this->db->select('item_id, item_title, item_isbn');
$this->db->from('item');
$query = $this->db->get();
return $query->result_array();
}
视图
<?php foreach ($items as $item):?>
<h3><?php echo $item['item_title'] ?></h3>
<img class="img-responsive thumbnail" src="http://covers.openlibrary.org/b/isbn/<?php echo $item['item_isbn']; ?>-M.jpg">
<?php endforeach; ?>
控制者
public function index() {
$data = array(
'items' => $this->items_model->itemList()
);
$this->load->view('item_view', $data);
}
除非10个用户使用相同的IP地址(不太可能),否则每个用户仅计为10个视图。 单个用户将必须打开十个选项卡,并在时间限制内(或多次刷新页面)点击页面以超过限制。
如果他们在5分钟内浏览了10页,他们将在图像中看到错误。 您可以在页面上放置一条消息来说明这一点,也可以限制他们更新页面的频率。 您可能会尝试将图像缓存在您的站点上,然后从那里显示它们(没有限制),但这可能违反了它们的服务条款。
我去了他们的网站,他们还提供了所有图像供下载。 如果您从自己的站点提供服务,则将完全避免速率限制。
使用PHP和curl,设置一个程序以定期下载图像,解压缩图像并定期下载数据文件应该是相对容易的任务。
基本上,您将:
索引文件上的文档是粗略的,尚不清楚是否可以使用IBSN号查找图像文件名。 这需要一些研究和测试才能得出。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.