[Hwllo,请尝试从api中获取15000个对象,我使用了guzzle和file_get_contents,但这需要很长时间,有时页面无法完全加载。
您能帮我解决这个问题吗?
这里只是一个例子,目的是让您了解我是如何产生这种问题的。
在您的控制器中,应始终对返回的集合进行分页。如下所示
$users = User::all()->paginate(100);
laravel将返回这20个用户以及一些数据,例如下一个url,上一个url,current_page等。这些附加信息很重要,因此您将知道下一个url和上一个url是什么(这些url将在您的api中使用请求);
现在,在获得分页的用户之后,您还需要计算总用户数,并将其与用户一起返回,以便您的前台知道它将显示多少页面。像下面这样
$total_users = User::all()->count();
现在您的最终控制器将如下所示。
public function getUsers() {
$users = User::all()->paginate(20);
$total_users = User::all()->count();
return compact('users', 'total_users');
}
它将返回这些结果。
users // the 20 users
total_users // the total number of users in your table
currentPage
lastPage
perPage
hasMorePages
url
nextPageUrl
firstItem
lastItem
total
count
因此,每次单击数据表中的页面时,您只需要在api请求中使用下一个nextPageUrl和prevPageUrl作为url。