我开发了一个具有单页应用程序概念的Web应用程序,但没有一个现代技术和框架。 所以我有一个jQuery页面,动态地向localhost请求数据 - 一个Laravel实例,用于编译DB中的条目(在给定的时间间隔内)。
因此,客户希望查看上周的所有条目,该应用程序正常工作。但是,如果他想看到整个上个月的结果......好吧,他们就是这么多,以至于php的默认执行时间足以处理所有数据(30秒)。当然,我可以轻松地覆盖它,但是jQuery客户端将循环遍历这些对象数组并对它们进行处理(sort,find,sum ...)。所以我甚至不确定jQuery能处理这么多数据。
所以我的问题可以分为两部分:
可以使用laravel - > paginate(),因此jQuery的ajax请求也可以对数据进行分块吗?这是如何工作的(希望以一种不会强迫我重写所有代码的方式)。
如何在客户端存储大量信息?这只是暂时的,但用户会在我的网页上闲逛很长时间,而且每次按下按钮时我都不希望他们等待5分钟
感谢。
答案 0 :(得分:2)
如果要为备份中存储的大量数据提供界面,应该对数据进行分页。这是一种标准方法,所以我相信你的客户会对此感到满意。
使用分页非常简单 - 请参阅Laravel 5.0的文档:http://laravel.com/docs/5.0/pagination
为了在后端对结果进行分页,您需要在查询中调用 paginate($ perPage),而不是在控制器中调用 get(),如下所示:
$users = User::whereIsActive(true)->paginate(15);
这将返回分页结果,每页有15条记录。页码将取自请求的页面参数。为了获得第3页用户,您需要使用您的前端jQuery应用程序向URL发送请求,如:
/users?page=3
我不建议在前端应用程序中缓存数据。其他用户可以更改数据,您甚至都不知道。并且通过分页,您的请求应该足够轻量级,以便不再担心发送请求以获取每一页结果。
答案 1 :(得分:0)
不确定你是否订阅了laracasts,但Jeffery Way在解释Laravel的功能方面非常出色,我强烈推荐他的视频。
简而言之,您可以对结果进行分页,然后在您对项目调用foreach时在视图上,您可以通过array_chunk()结果显示结果,以显示它们的所需方式。但是分页结果将使用URL中的查询获取,如果您已经使用大量jQuery将所有内容保存在同一页面上,我不确定这是您想要的。
https://laracasts.com/lessons/crazy-simple-pagination
但假设您已经使用您已为json数据编写的任何jQuery对结果进行分页...
您还可以使用查询范围来获取所需的数据,以便创建与ajax一起使用的简单api。我认为这可能是你正在寻找的东西。
所以,假设您已经使用自己的javascript手动进行分页,我会做些什么。
有关查询范围的更多信息:http://laravel.com/docs/5.1/eloquent#query-scopes